我正在关注依赖注入的角度文档,并尝试复制以下部分依赖注入标记。但很明显我还是不明白。
我正在尝试使用value provider
注入一个config:any
进入我的项目。
在最简单的层面上,我只想provide
常量字符串
// app-modules.ts
const CFG_STRING = "I was declared externally and injected in ngModule"
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
providers: [
{provide: CFG_STRING, useValue: CFG_STRING}
],
bootstrap: [ App ]
})
and inject
进入组件构造函数
// app.ts
const LOCAL_STRING = "I was declared in the local module"
export class App {
constructor(
// @Optional() cfgString: CFG_STRING
) {
this.name = 'Angular2'
this.local = LOCAL_STRING
/* provided/injected */
// this.injectedStr = cfgString
}
}
但是当我这样做时,应用程序无法正常运行。我究竟做错了什么?
这是一个笨蛋:http://plnkr.co/edit/sQwxyDqLkMTgVUjJ1yYF?p=preview
如果您不使用类型作为提供程序的键,而是使用字符串或OpaqueToken
你需要将密钥传递给@Inject()
constructor(
@Inject('CFG_STRING') /* @Optional()*/ cfgString: CFG_STRING
) {
并提供它就像
providers: [
{provide: 'CFG_STRING', useValue: CFG_STRING}
],
CFG_STRING
不是类型,因此不能用作键。您使用一些字符串或提到OpaqueToken
。它可以是任何字符串,它只需要在之间匹配provide
and @Inject()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)