如何从Angular2 / TypeScript中的Viewbag读取值?

时间:2016-07-01 12:15:24

标签: angular

我正在使用MVC和Angular2作为Web应用程序。我需要将一个值从我的控制器传递到索引页面,从那里开始Angular2。现在我需要从角度使用Typescript读取View包中的值。我能这样做吗?我搜索了很多但没有得到任何信息!

1 个答案:

答案 0 :(得分:2)

你基本上有两个选择。

选项#1:获取请求

从根组件(使用服务)发出GET请求,这将获取必要的配置数据。

选项#2:嵌入JSON有效负载

使用此选项,您可以将JSON数据直接嵌入到登录页面中。为了能够从Angular应用程序访问此数据,您需要将其存储为全局变量。然后从应用程序中检索数据对象将非常简单。唯一的,你应该避免在这种情况下直接读取全局变量,只是因为它容易出错。使用简单的AppConfig服务抽象全局访问更好。好处是,以后您可以更改数据源(如果您决定切换到上面的GET请求选项)而没有太多麻烦。

所以第一步是将JSON写入HTML,也许是这样:

<script>
  var __appConfig = JSON.parse('@Html.Raw(appConfig)');
</script>

我不是C#专家,所以它可能不是最佳的。

然后帮助服务看起来像这样:

export class AppConfig {
  private _config = window.__appConfig

  getConfig() {
    return this._config
  }
}

选择哪一个?我想说这取决于你想传递给Angular 2 app的数据类型。在许多具有大JSON有效负载的情况下,使用GET请求方式确实很有意义。另一方面,对于简单变量或小块数据,我更喜欢将数据直接嵌入到HTML中。它还可以避免再发出一个AJAX请求。