这个问题仍然是我的最后一个问题 No provider for ObservableDataService
所以,我有应用程序范围的服务UploadedTemplatesService
,它必须是单例。该服务有一个依赖项 - ObservableDataService
,该依赖项必须只为该单一作品UploadedTemplatesService
创建一次,但ObservableDataService
也可以在其他服务中使用,并且该服务必须为其他服务注入每次都有新的对象。
必须要注意 - 我也想在Route钩子里面使用UploadedTemplatesService
,所以我添加到bootstrap .then
方法并在.then
里面添加appRef.injector AppInjector
函数。
AppInjector
代码:
```
export const AppInjector = (injector?: Injector): Injector => {
if (injector) {
appInjectorRef = injector;
}
return appInjectorRef;
};
```
所以在那之后,我可以像UploadedTemplatesService
那样在Route钩子中获得Injector.get(UploadedTemplateService)
。
所以,我看了一下文档并尝试编写类似
的内容```
bootatrap(AppComponent, [
provide(UploadedTemplatesService, {
useFactory: () => {
return new UploadedTemplatesService(new ObservableDataService());
}
})
])
```
但该代码会抛出新错误:Cannot read property 'getOptional' of undefined
我做错了什么?
答案 0 :(得分:0)
我真的不明白你尝试做什么但是如果你想在依赖注入中使用useFactory
并且ObservableDataService
可用,你应该使用类似的东西:
bootstrap(AppComponent, [
ObservableDataService,
provide(UploadedTemplatesService, {
useFactory: (dataService: ObservableDataService) => {
return new UploadedTemplatesService(dataService)
},
deps: [ObservableDataService]
})
);
也就是说,通过在UploadedTemplatesService
级别指定ObservableDataService
和bootstrap
个提供商,您将拥有这些服务的单身人士......
答案 1 :(得分:0)
provide(ServiceA, {
useValue: new ServiceA(new CollectionService<ServiceADataType>())
})
有效。那么,为什么useFactory抛出Cannot read property 'getOptional' of undefined
错误?