Ale*_*mov 2 angular-module angular angular-httpclient
该文档上HttpClientModule说:
在您可以使用 HttpClientModule 之前,您需要导入 Angular HttpClientModule。大多数应用程序都在根 AppModule 中执行此操作。
HttpClientModule到功能模块中?HttpClientModule,而我们HttpClientModule只想导入这几个模块时,这是一个正确的用例吗?因此,有两种方法可以在根模块中加载模块,
现在,当您在导入数组中加载模块时,该模块提供的所有服务都将成为单例服务,也就是说,只有这些服务的单个实例将在整个应用程序中共享。这些服务的实例是在应用程序引导时由根注入器创建的。
在服务方面,无论是在根模块中加载一个模块还是在多个功能模块中加载,然后将所有这些功能模块加载到根模块中,最终都会得到服务的单个实例。
但是,就您的声明而言,即组件、管道、指令。如果要将 AModule 用于其导出的组件,则必须在要使用这些组件的功能模块中加载 AModule。
但是,您可以查看 HttpClientModule source_code。声明或导出数组中没有任何内容。它只提供服务,所以不管你是在你的功能模块中加载它(同时在根模块的导入数组中加载功能模块),还是在根模块中,你都会以任何一种方式获得它的服务。因此,只需将其加载到根模块中即可。
现在,当您使用延迟加载来加载功能模块时,延迟加载的模块确实获得了根模块中所有其他模块提供的所有服务,但它有自己的注入器,这意味着如果您在延迟加载的模块中加载 HttpClientModule已加载到根模块中,您最终将获得 HttpClientModule 提供的所有服务的两个实例,而您不希望那样。
您可以进一步阅读有关 forRoot 和 forChild 模式的更多信息来解决此类情况。
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |