我通过显式设置属性来为我的对象设置全局命名空间window.
window.MyNamespace = window.MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)
TypeScript强调MyNamespace并抱怨:
属性'MyNamespace'在'window'类型的值上不存在任何"
我可以通过声明MyNamespace为环境变量并删除window显式来使代码工作,但我不想这样做.
declare var MyNamespace: any;
MyNamespace = MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)
我怎样才能window留在那里让TypeScript开心?
作为旁注,我发现TypeScript抱怨特别有趣,因为它告诉我这种window类型any绝对可以包含任何东西.
================================================== ==============
编辑:解决方案升级到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) 我的 Angular 应用程序 data.js 中有一个 js 文件。这个 js 文件中声明了一些变量,如下所示。
var data = 'test'
Run Code Online (Sandbox Code Playgroud)
现在我必须在我的组件 (app.component.ts) 中访问这些变量及其值。
我读了一些将它们声明为导出使它们成为模块并且可以在任何地方访问的地方,但我不确定如何做到这一点。
这是我的应用程序的结构。我在assets->js文件夹中有data.js。我需要修改app.component.ts中的变量值。
我对 Angular 很陌生。这甚至可能吗?