angular - Angular 5 - 将服务限制为模块
问题描述
我有两个模块——我们称它们为模块-E 和模块-P。我在模块 E 中有一项服务,比如 service-E,它有多种方法。我想在模块-P 中使用服务-E 的所有功能,除了少数功能,所以我从服务-E 扩展了服务-P,并在服务-P 中覆盖了这些功能。
在模块 E 中,提供者声明是
providers: [service-E]
在 module-P 中,提供者声明是
providers: [{provide: service-E, useClass: servie-P}]
问题是如果我先加载模块-P,即使在模块-E 中我也会得到服务-P,如果我先加载模块-E,那么我会在模块-P 中得到服务-E。
无论如何,我都想将 service-P 限制为 module-P,将 service-E 限制为 module-E。
解决方案
模块中提供的服务在根注入器中注册。因此,您获得的第一个实例将在整个应用程序中共享。
但是,如果模块是延迟加载的,那么它们将为每个模块都有一个单独的实例。
参考:https ://angular.io/guide/dependency-injection#injectable-ngmodule-or-component
推荐阅读
- azure - 使用 azure 秘密提供程序类进行自定义
- postman - Postman 测试集合运行良好,所有测试都在 Postman 中通过,但所有测试都使用 Newman i 命令行失败
- rpc - 如何验证节点上运行的 RSK 版本?
- excel - 如果特定单元格没有值,VBA宏如何删除范围内的整行
- jqgrid - 在重新加载具有 Multiselect = true 的 JqGrid 后保留复选框的先前选中状态
- android-studio - Android Studio 无法生成 Javadoc(测试失败)
- r - R 中的 III 型 anova,模型中的别名系数
- entropy - 测量值熵的即时计算
- python - 如何根据时间增量删除重复行,同时保持该记录的最新出现?
- vue.js - 需要一个标识符,而是看到“导入”(保留字)jshint