javascript - 在另一个提供者中注入一个提供者,相同的模块 #1250
问题描述
我有一个服务/提供者,假设它是 call ServiceA1
,在标记为 的模块 A 中@Injectable()
。在同一个模块中,我有另一个服务/提供者,假设它是 call ServiceA2
,标记为@Injectable()
。
我想注入ServiceA1
我ServiceA2
尝试:
此代码引发错误:serviceA1 undefined
.
我的模块.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},
]
这也适用于同一模块。
推荐阅读
- javascript - 我可以将选定单选按钮中的特定图像添加到 Javascript 中的值吗
- java - Spring Boot 2.1.4 ControllerAdvice 不起作用
- ios - 消耗品与非消耗品
- fiware - 在 Wirecloud 混搭中创建 NGSI 源订阅
- kubernetes - Kubernetes CRI 的最新 protobuf API 在哪里?
- javascript - 如何使用引导程序在单击同一页面上的另一个按钮时保持选中按钮?
- bash - 通过根据开始和结束匹配将内容分成几行,使用 awk 或 sed 解析 json 文件
- c++ - C++ 中的继承:在父子类中定义变量
- flutter - 如果有可用空间,则展开文本字段,如果没有,则使用滚动设置 minHeight
- dicom - 我们可以修改 DICOM 图像的传输语法 UID 标签吗?