首页 > 解决方案 > 将 HttpClientModule 添加到 Angular 库会引发“NullInjectorError: No provider for Injector”

问题描述

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

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

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

ng new myapp
npm install ../mylibrary/dist/mylib 并添加MylibModuleimports我的app.module.ts

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

现在我想用 http 调用扩展我的库,所以我将 HttpClient 添加HttpClientModule到我的库模块的导入中,并将 HttpClient 添加到我的服务的构造函数中。ng build我在我重新运行的应用程序上重建库npm install..并运行,ng serve现在我的应用程序抛出:

StaticInjectorError(Platform: core)[HttpHandler -> Injector]: NullInjectorError: No provider for Injector!

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

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

标签: angulartypescript

解决方案


这是因为模块链接。如果您使用“ng server --aot”,您将不会遇到此问题。您可以删除链接并将模块直接复制到 node_modules

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


推荐阅读