我在标记为ServiceA1
的模块A中有一个服务/提供者,称为@Injectable()
。
在相同的模块中,我还有另一个服务/提供者,我们称它为ServiceA2
,标记为@Injectable()
。
我想在尝试的ServiceA1
中注入ServiceA2
:
此代码引发错误:serviceA1 undefined
。
我的module.ts
是否需要制作另一个模块才能在serviceA2
中使用serviceA1
?
答案 0 :(得分:1)
如果您要直接由类注入服务,则不需要@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},
]
这在同一模块中也适用。