在Angular 2中使用OpaqueToken

时间:2017-03-19 06:18:56

标签: angular

我在我的示例Angular 2应用程序中使用OpaqueToken,下面是相关代码

//app.module.ts
......
....
export const MY_CONFIG_TOKEN = new OpaqueToken('MY_CONFIG_TOKEN');

providers: [
         { provide: MY_CONFIG_TOKEN, useValue: {test:'test'} }
         ]
....
.....        

下面是我的相关根组件代码,其中我使用令牌进行依赖注入

....
....
constructor(@Inject(MY_CONFIG_TOKEN) private myconfig:any,){}   

在浏览器中运行此应用程序会抛出错误

  

无法解析AppComponent的所有参数

任何想法可能是造成此错误的原因。 如果需要提供更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

这是一个工作插件https://plnkr.co/edit/pDNFSP?p=preview,展示了如何使用OpaqueToken。 以下是定义OpaqueToken的方法:

import { OpaqueToken } from '@angular/core';
export let MY_CONFIG_TOKEN = new OpaqueToken('configToken');

然后在主模块中导入它:

import { MY_CONFIG_TOKEN } from './token';

然后在供应商

下注册
providers: [{provide: MY_CONFIG_TOKEN, useValue: {test:'test'} }],

最后你可以像这样使用它:

constructor(@Inject(MY_CONFIG_TOKEN) private myconfig:any) {
    myconfig.value = "Hello";
    console.log(myconfig.value);
  }

在App组件中,我附加了一个虚拟"值"属性到令牌,并在构造函数中设置后在控制台中显示它。

希望这有帮助。

答案 1 :(得分:0)

修改此

export const MY_CONFIG_TOKEN = new OpaqueToken('MY_CONFIG_TOKEN');

declare let MY_CONFIG_TOKEN = new OpaqueToken(window_object);