这是一个简单的情况。在我的库项目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提供服务时会收到该错误的信息吗?
答案 0 :(得分:0)
您应该使用
providers: [ MyService ]
代替
provider: [{provide: MyService, useClass: MyExtendedService }]