Angular 角度5-将维修限制在模块上

Angular 角度5-将维修限制在模块上,angular,angular-services,Angular,Angular Services,我有两个模块,我们称它们为module-E和module-p。我在module-E中有一个服务,即service-E,它有多种方法。我想使用模块P中service-E的所有功能,除了一些功能,因此我从service-E扩展了service-P,并覆盖了service-P中的这些功能 在模块E中,提供者声明为 providers: [service-E] providers: [{provide: service-E, useClass: servie-P}] 在模块p中,提供程序声明为 pr

我有两个模块,我们称它们为module-E和module-p。我在module-E中有一个服务,即service-E,它有多种方法。我想使用模块P中service-E的所有功能,除了一些功能,因此我从service-E扩展了service-P,并覆盖了service-P中的这些功能

在模块E中,提供者声明为

providers: [service-E]
providers: [{provide: service-E, useClass: servie-P}]
在模块p中,提供程序声明为

providers: [service-E]
providers: [{provide: service-E, useClass: servie-P}]
问题是,如果我先加载模块p,即使在模块E中也会得到服务p,如果我先加载模块E,然后在模块p中得到服务E


我想将service-p限制为module-p,service-E限制为module-E,不管怎样。

您不能限制它们,因为所有服务都共享同一个注入器,所以无论何时加载服务(例如从延迟加载的模块),服务都将变为全局可用


来源:

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

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

参考: