我收到错误“No provider for ObservableDataService”
ObservableDataService
:
https://github.com/sanex3339/bannerscreator/blob/master/resources/assets/typescript/Services/ObservableDataService/ObservableDataService.ts
服务其中ObservableDataService
将注入:https://github.com/sanex3339/bannerscreator/blob/master/resources/assets/typescript/Services/UploadedTemplatesService/UploadedTemplatesService.ts
我在里面描述了ObservableDataService'providers'
的选项@Component
的装饰者UploadedTemplatesService
.
但这个错误仍然发生。
为什么我仍然收到此错误?
重要的!:现在在仓库中为了防止这个错误我使用全局注入ObservableDataService
throug bootstrap()
, but 我不需要ObservableDataService
作为单身人士。
I need UploadedTemplatesService
作为单例,其中新ObservableDataService
将注入。
事实上,当您实现服务时,您不需要使用@Component
装饰师。使用@Injectable
装饰器就够了。
我想有点令人不安的是没有办法在@Injectable
装饰师。原因是提供者链接到组件。从组件执行的所有处理都将使用该组件的注入器。
我的意思是如果组件A调用服务,而服务又调用服务B。这@Injectable
装饰器将尝试解析组件注入器中的服务。
另一个重要的部分是 Angular2 的“分层注入器”特性。以下是所有这些元素及其与我的样本的关系的概述:
Application
(application injector)
|
ComponentA --- ServiceA --- ServiceB
(component injector)
在这样的应用中,我们有两个注入器:
- 可以使用第二个参数配置的应用程序注入器
bootstrap
功能
- The
AppComponent
可以使用配置的注入器providers
该组件的属性。它可以“查看”应用程序注入器中定义的元素。这意味着如果在此提供程序中找不到提供程序,它将自动在该父注入器中查找。如果后者没有找到,则会抛出“未找到提供者”错误。
所以在你的情况下,你可以定义ObservableDataService
在组件或以上组件的提供者内。当然在 bootstrap 中定义它是最广泛的......
这个问题可以为您提供有关分层注入器如何进行的更多详细信息
角度工作:
- 在 Angular 2(Beta)中将一项服务注入另一项服务的最佳方法是什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)