在另一个提供者中注入提供者,相同的模块#1250
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在另一个提供者中注入提供者,相同的模块#1250相关的知识,希望对你有一定的参考价值。
我有一个服务/提供商,让我们说它叫ServiceA1
,在一个标记为@Injectable()
的模块中。在同一个模块中我有另一个服务/提供者,让我们说它叫ServiceA2
,标记为@Injectable()
。
我想在ServiceA1
注入ServiceA2
我尝试:
此代码抛出错误:serviceA1 undefined
。
我的module.ts
我是否必须制作另一个模块才能在serviceA2
中使用serviceA1
?
答案
如果您是由班级直接注入服务,则不需要@Inject()
:
@Injectable()
export class ServiceA2 {
constructor(private serviceA1: ServiceA1) {
}
这与:
@Injectable()
export class ServiceA2 {
constructor(@Inject(ServiceA1) private serviceA1: ServiceA1) {
}
请注意,您注入了@Inject('ServiceA1')
而不是@Inject(ServiceA1)
。这是由字符串标记而不是类匹配,因此无法解析。
如果您想通过字符串标记注入类,则需要在模块中声明提供程序,如下所示:
providers: [
ServiceA2,
{provide: 'ServiceA1', useClass: ServiceA1},
]
这也适用于同一模块。
以上是关于在另一个提供者中注入提供者,相同的模块#1250的主要内容,如果未能解决你的问题,请参考以下文章