Angular2如何从MVC传递应用程序配置?

时间:2016-10-18 16:51:58

标签: javascript asp.net-mvc angular app-config angular2-services

尝试从RC4升级=> Angular 2.1.0

 var native = this.elementRef.nativeElement;
 var myattr = native.getAttribute("applicationConfig");

我得到了:

异常:调用节点模块失败并显示错误:TypeError:native.getAttribute不是函数

我的目标是将来自MVC端的applicationConfig转换为angular。 以前我们设置一个全局对象并通过角度侧的窗口['objName']访问它。如何将配置传递给角度?我已经尝试过elementRef技巧,但似乎它在2.1.0

中根本不起作用
<app asp-prerender-module="ClientApp/boot-server"
         asp-prerender-webpack-config="webpack.config.js"
         applicationConfig="@ViewBag.appConfig">Loading...</app>

我在我的bootstrapped组件中使用了元素ref - AppComponent

1 个答案:

答案 0 :(得分:0)

当我的ng2应用程序启动时,我需要将一些服务器端变量传递给应用程序。这是我的剃刀视图:

@ModelType MyProject.Models.MasterViewModel
<!DOCTYPE html>

<html>

<head>
  <base href="/">
 
  <script type="text/javascript" src="~/assets/js/inline.bundle.min.js"></script>

</head>

<body>
  <app>Loading...</app>
  <script>
    var APP_SETTINGS = {
      apiUrl: "@Model.ApiUrl",
      ipAddress: "@Model.IpAddress",
      referredFrom: "@Model.ReferredFrom",
      browser: "@Model.Browser"
    }
  </script>
  <script type="text/javascript" src="~/assets/js/main.bundle.min.js"></script>
</body>

</html>

然后,当我想引用APP_SETTINGS时,我会执行以下操作(在我的ng2应用程序的上下文中):

export interface IAppSettings {
    apiUrl: string;
    ipAddress: string;
    referredFrom: string;
    browser: string;
}
declare const APP_SETTINGS: IAppSettings;