首页 > 解决方案 > 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。

标签: angularangular-services

解决方案


模块中提供的服务在根注入器中注册。因此,您获得的第一个实例将在整个应用程序中共享。

但是,如果模块是延迟加载的,那么它们将为每个模块都有一个单独的实例。

参考:https ://angular.io/guide/dependency-injection#injectable-ngmodule-or-component


推荐阅读