将数据从ASP.NET MVC控制器传递到Angular 2.0组件的最佳方法是什么.例如,我们使用ASP.NET MVC模型,并希望将它的JSON版本发送给Angular,因此我们可以在Angular中使用它.
在控制器为视图提供服务的那一刻,我们已经能够将一些数据推送到Angular2(模型).因此不需要额外的AJAX调用来获取该数据.
但是我正在努力将它"注入"Angular组件.你怎么做到这一点?对此有什么好的参考?你可能已经注意到了,我对Angular2很新.
我的index.cshtml看起来像这样.
<div class="container">
<div>
<h1>Welcome to the Angular 2 components!</h1>
</div>
<div class="row">
<MyAngular2Component>
<div class="alert alert-info" role="alert">
<h3>Loading...</h3>
</div>
</MyAngular2Component>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
亲切的问候,
抢
================================================== ==============
编辑:解决方案升级到2.0 Final后 - 在RC5升级后将服务器参数传递给ngModule
================================================== ================
有没有将服务器参数传递给Angular 2应用程序的方法?
即我想使用MVC对象"HttpContext.User.Identity.Name",并在我的角度2应用程序中的任何地方注入它.
在角度1中,这可以使用ng".constant"并将.Net对象序列化为index.cshtml中的JSON.
看起来有一种方法可以传递params,但这不适用于.Net代码. 在Angular 2中定义全局常量
//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>
Run Code Online (Sandbox Code Playgroud)
最终解决方案:(非常感谢蒂埃里)
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>
Run Code Online (Sandbox Code Playgroud)
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
]);
}
Run Code Online (Sandbox Code Playgroud)
用法:
import …Run Code Online (Sandbox Code Playgroud)