【发布时间】:2019-03-08 14:54:49
【问题描述】:
这是一个简单的情况。在我的名为 lib-a 的库项目中,定义了 3 个类:libAModule、LibAComponent 和 MyService。 LibAComponent 有一个以 MyService 作为参数的构造函数。 MyService 用
装饰@Injector()
属性。
在根应用程序的 appModule 中,我提供该服务:
providers: [MyService]
appModule 还有一个以 MyService 作为参数的构造函数。
当我运行应用程序时,依赖关系在 appModule 的构造函数中解析(通过在调试器中单步执行来验证),但是,当我尝试渲染 LibAComponent 时,我在浏览器控制台窗口中收到以下错误:
Error: StaticInjectorError(AppModule)[libAComponent-> MyService]:
StaticInjectorError(Platform: core)[libAComponent-> MyService]:
NullInjectorError: No provider for MyService!
我可以通过更新来解决这个问题
@Injector({provideIn: 'root'})
MyService 的属性。但是,理论上它相当于像我一样在appModule中提供服务。我想这样做的原因是因为最终我想在 appModule 中提供服务:
providers: [{provide: MyService, useClass: MyExtendedService }]
myExtendedService 在库项目之外定义。
谁能弄清楚为什么我通过 appModule 提供服务时会出现该错误?
【问题讨论】:
-
您使用的是哪个 Angular 版本?可以给我们 app.module 和 MyService.ts 吗?谢谢
标签: angular dependency-injection library-project