我有一个服务/提供者,假设它在模块 A 中调用 ServiceA1
,标记为 @Injectable()
。
在同一模块中,我有另一个服务/提供者,假设它调用ServiceA2
,标记为@Injectable()
。
我想在 ServiceA2
中注入(inject) ServiceA1
我尝试使用:
此代码抛出错误:serviceA1 undefined
。
我的模块.ts
我是否必须创建另一个模块才能在 serviceA1
中使用 serviceA2
?
最佳答案
如果您直接通过类注入(inject)服务,则不需要 @Inject()
:
@Injectable()
export class ServiceA2 {
constructor(private serviceA1: ServiceA1) {
}
这与:
相同@Injectable()
export class ServiceA2 {
constructor(@Inject(ServiceA1) private serviceA1: ServiceA1) {
}
请注意,您注入(inject)了 @Inject('ServiceA1')
而不是 @Inject(ServiceA1)
。这是通过字符串标记而不是类来匹配的,因此无法解析。
如果您想通过字符串标记注入(inject)类,则需要在模块中声明提供程序,如下所示:
providers: [
ServiceA2,
{provide: 'ServiceA1', useClass: ServiceA1},
]
这也适用于同一模块。
关于javascript - 将一个提供程序注入(inject)另一个提供程序,相同的模块 #1250,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088444/