gpt4 book ai didi

javascript - 在另一个提供者中注入(inject)一个提供者,相同的模块 #1250

转载 作者:行者123 更新时间:2023-11-30 20:04:13 24 4
gpt4 key购买 nike

我有一个服务/提供者,假设它在标记为 @Injectable() 的模块 A 中调用 ServiceA1。在同一模块中,我有另一个服务/提供者,假设它调用ServiceA2,标记为@Injectable()

我想在 ServiceA2 中注入(inject) ServiceA1 我尝试: my service

此代码抛出错误:serviceA1 undefined

我的模块.ts

module.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com