将HttpClientModule添加到Angular库中会引发`NullInjectorError:没有Injector提供程序`

时间:2019-07-29 14:56:07

标签: angular typescript

我正在开发Angular库。我已经这样设置了库:

ng new mylibrary --create-application false
ng g library mylib

现在,我可以ng build创建一个使用它的应用程序,如下所示:

ng new myapp
npm install ../mylibrary/dist/mylib 并将MylibModule添加到我的imports的{​​{1}}

这很好用,默认情况下,库中有一个我可以使用的组件。库中还有一个依赖项注入服务。也可以正常工作。

现在,我想通过http调用扩展我的库,因此我将app.module.ts添加到库模块的导入中,并将HttpClient添加到服务的构造函数中。我用HttpClientModule重建了lib,然后在应用上重新运行ng build ..并用npm install运行,现在我的应用抛出了:

ng serve

我想我必须以某种方式告诉库使用从应用程序注入的HttpClient,但是如何?

编辑 添加回购:https://github.com/floreseken/NgLibDI

1 个答案:

答案 0 :(得分:2)

这是由于模块链接。如果使用“ ng server --aot”,则不会遇到此问题。您能否删除链接并将模块直接复制到node_modules

打开C:\ Git \ NgLibDI \ myapp \ node_modules并删除“ mylib”链接,然后将MyLib从Dist手动复制到myapp的node_modules