角度相关性注入无法解析库组件

时间:2019-03-08 14:54:49

标签: angular dependency-injection library-project

这是一个简单的情况。在我的库项目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提供服务时会收到该错误的信息吗?

1 个答案:

答案 0 :(得分:0)

您应该使用

 providers: [ MyService ]

代替

provider: [{provide: MyService, useClass: MyExtendedService }]