Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 应用程序范围的服务,在引导中没有应用程序范围的依赖项服务_Angular - Fatal编程技术网

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
类型;-)