Angular 应用程序范围的服务,在引导中没有应用程序范围的依赖项服务
这个问题是我的最后一个问题 因此,我有一个应用程序范围的服务Angular 应用程序范围的服务,在引导中没有应用程序范围的依赖项服务,angular,Angular,这个问题是我的最后一个问题 因此,我有一个应用程序范围的服务UploadedTemplatesService,它必须是单例的。该服务有一个依赖项-observedTaService,并且该依赖项必须为该单音UploadedTemplatesService创建一次,但是observedTaService也可以在其他服务中使用,并且该服务每次都必须为每个其他服务注入新对象 必须注意的重要事项-我也想在路由钩子中使用UploadedTemplatesService,因此我添加了bootstrap。然
UploadedTemplatesService
,它必须是单例的。该服务有一个依赖项-observedTaService
,并且该依赖项必须为该单音UploadedTemplatesService
创建一次,但是observedTaService
也可以在其他服务中使用,并且该服务每次都必须为每个其他服务注入新对象
必须注意的重要事项-我也想在路由钩子中使用UploadedTemplatesService
,因此我添加了bootstrap。然后添加了方法和内部。然后添加appRef.injector内部AppInjector
功能。
AppInjector
代码:
```
```
所以在那之后,我可以像Injector.get(UploadedTemplateService)
一样在路由钩子中获取UploadedTemplatesService
所以,我看了一下文档,试着写一些
```
```
但该代码抛出新错误:无法读取未定义的属性“getOptional”
我做错了什么?我真的不明白你想做什么,但是如果你想使用useFactory
,并且在依赖注入中有observedataservice
可用,你应该使用这样的东西:
bootstrap(AppComponent, [
ObservableDataService,
provide(UploadedTemplatesService, {
useFactory: (dataService: ObservableDataService) => {
return new UploadedTemplatesService(dataService)
},
deps: [ObservableDataService]
})
);
也就是说,通过指定UploadedTemplatesService
和observedAtService
提供程序,在bootstrap
级别,您将拥有这些服务的单例…我不太明白您试图做什么,但如果您想使用useFactory
并在中提供observedAtService
依赖项注入,您应该使用如下内容:
bootstrap(AppComponent, [
ObservableDataService,
provide(UploadedTemplatesService, {
useFactory: (dataService: ObservableDataService) => {
return new UploadedTemplatesService(dataService)
},
deps: [ObservableDataService]
})
);
provide(ServiceA, {
useValue: new ServiceA(new CollectionService<ServiceADataType>())
})
这就是说,通过在bootstrap
级别指定UploadedTemplatesService
和observedAtService
提供者,您将拥有这些服务的单例…提供(ServiceA{
provide(ServiceA, {
useValue: new ServiceA(new CollectionService<ServiceADataType>())
})
useValue:new ServiceA(new CollectionService())
})
这很有效。那么,为什么useFactory抛出无法读取未定义的错误的属性“getOptional”?提供(ServiceA{
useValue:new ServiceA(new CollectionService())
})
这很有效。那么,为什么useFactory抛出无法读取未定义的属性“getOptional”
错误?否,ObservableDataService必须不是应用程序范围的。只有UploadedTemplateService,它有一个依赖项-ObservableDataService,因为ObservableDataService的每个对象都可以包含自己的数据。例如,我想创建另一个应用程序范围的服务BlablaBlaBlasService,该服务将把他的数据存储在他的dependency ObservedataService中。ObserveredatService——只是一个基于RxJS的集合好吧,我想我理解你试图做什么。但在这种情况下,ObservableDataService不能参与基于构造函数的依赖关系注入。。。这似乎是你想要的。您是否仍在尝试将此服务注入应用程序的某个位置?我仍在尝试这样做。关于无法读取未定义的错误的属性“getOptional”-我不知道为什么会发生这种情况,因为我在Angular 2文档中这样做(例如V8引擎),但是我在构造函数中设置了空构造函数ObservableDataService,或者您忘记导入ObservableDataService
类型;-)不,ObservableDataService不能是应用程序范围的。只有UploadedTemplateService,它有一个依赖项-ObservableDataService,因为ObservableDataService的每个对象都可以包含自己的数据。例如,我想创建另一个应用程序范围的服务BlablaBlaBlasService,该服务将把他的数据存储在他的dependency ObservedataService中。ObserveredatService——只是一个基于RxJS的集合好吧,我想我理解你试图做什么。但在这种情况下,ObservableDataService不能参与基于构造函数的依赖关系注入。。。这似乎是你想要的。您是否仍在尝试将此服务注入应用程序的某个位置?我仍在尝试这样做。关于无法读取未定义的错误的属性“getOptional”-我不知道为什么会发生这种情况,因为我在Angular 2文档中这样做(例如V8引擎),但是我在构造函数中设置了空构造函数ObservableDataService,或者您忘记导入ObservableDataService
类型;-)