【问题标题】:angular dependency injection not resolving for library component角度依赖注入无法解决库组件
【发布时间】: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


【解决方案1】:

你应该使用

 providers: [ MyService ]

代替

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

【讨论】:

  • 对不起,不是这样。在这个问题中,我使用的是提供者而不是提供者,这是我的错字。
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
相关资源
最近更新 更多