asp.net-mvc – 将asp.net服务器参数传递给Angular 2 app
|
================================================== ============== 编辑:解决方案升级到2.0 Final – Passing server parameters to ngModule after RC5 upgrade ================================================== ================ 有没有将服务器参数传递给Angular 2应用程序的方法? 即我想使用MVC对象“HttpContext.User.Identity.Name”并在我的angular 2应用程序中的任何位置注入它. 在角度1中,这可以使用ng“.constant”并将.Net对象序列化为index.cshtml中的JSON. 看起来有一种方法可以传递params,但这不适用于.Net代码. //HTML - Bootstrapping
<script>
System.import('app/main').then(null,console.error.bind(console));
//I WOULD LIKE TO PASS SOME PARAMS TO APP/MAIN HERE
</script>
最终解决方案:(非常感谢蒂埃里) index.cshtml: <script>
System.import('app/main').then(
module =>
module.main(
{
name: '@User.Identity.Name',isAuthenticated: User.Identity.IsAuthenticated.ToString().ToLowerInvariant(),}
),console.error.bind(console)
);
</script>
main.ts: ...
import {provide} from '@angular/core';
...
export function main(params) {
bootstrap(AppComponent,[
provide('Name',{ useValue: params.name }),provide('IsAuthenticated',{ useValue: params.isAuthenticated }),ROUTER_PROVIDERS,HTTP_PROVIDERS,LoggerService,AuthenticationService
]);
}
用法: import {Component,Injectable,Inject} from '@angular/core';
import {ROUTER_DIRECTIVES} from '@angular/router';
@Component({
selector: 'navbar',templateUrl: 'app/components/header/navbar.html',directives: [ROUTER_DIRECTIVES]
})
export class SomeComponent {
constructor(@Inject('Name') public username: string) {
}
} 解决方法一个选项是在您导入的模块中添加方法.因此,您可以调用它来提供您想要的对象.以下是app / main模块的示例: import {bootstrap} from '...';
import {provide} from '...';
import {AppComponent} from '...';
export function main(params) {
let userIdentityName = params.name; // for example
bootstrap(AppComponent,[
provide('userIdentityName',{ useValue: userIdentityName })
]);
}
然后你可以从HTML主页面导入它,如下所示: <script>
System.import('app/main').then((module) => {
module.main({
userIdentityName: 'something from asp.net'
});
});
</script>
更新 使用最新版本的Angular,您需要以这种方式利用模块: export const USER_IDENTITY_NAME_TOKEN =
new InjectionToken('userIdentityName');
@NgModule({
(...)
providers: [
{
provide: USER_IDENTITY_NAME_TOKEN,useValue: userIdentityName
}
]
})
export class MainModule() { } (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC – 编辑对象列表
- asp.net-mvc – ASP.NET MVC RenderAction重新呈现整个页面
- asp.net-mvc – 在MVC Controller中访问GET参数
- asp.net-mvc – MVC 3部分页面(Razor)和MVC 3视图页面与布局
- asp.net-mvc – 在MVC身份(2.0.1)中的regenerateIdentity/v
- asp.net-mvc – 具有多个路由值的Url.Action帮助器的问题
- asp.net – 更新ValidationSummary列表控件模糊?
- asp.net-mvc – ASP.NET MVC模型在编辑器模板中绑定IList
- asp.net – 如何创建自定义数据注释验证器
- jwt – ASP.NET 5 OAuthBearerAuthentication:以下认证方案
- asp.net – 在不使用HttpRequest的情况下获取主机
- ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别
- asp.net – 这个LINQ statment是否容易受SQL注入
- asp.net – 如何在.net vb中发送POST?
- asp.net-mvc-3 – ASP.NET MVC DropDownListFor从
- asp.net – 如何在VB.NET中JSON编码数组?
- asp.net-mvc – 什么是ASP.NET MVC不适合?
- asp.net – 选择框更改事件中的setTimeout
- asp.net-mvc – 在MVC ActionLink中使用Knockout
- ASP.NET MVC 2中的asp.net-mvc-2 – LazyList vs
