У меня есть два модуля - назовем их модуль-E и модуль-P. У меня есть одна служба в модуле-E, например, служба-E, которая имеет несколько методов. Я хочу использовать все функции service-E в модуле-P, за исключением нескольких функций, поэтому я расширил service-P из service-E и переопределил эти функции в service-P.
В модуле-E декларация поставщика
providers: [service-E]
В модуле-P декларация поставщика
providers: [{provide: service-E, useClass: servie-P}]
Проблема в том, что если я сначала загружаю модуль-P, я получаю service-P даже в модуле-E, и если я сначала загружаю модуль-E, я получаю service-E в модуле-P.
Я хочу ограничить service-P модулем-P и service-E модулем-E, несмотря ни на что.





Вы не можете ограничить их, потому что все службы используют один и тот же инжектор, поэтому всякий раз, когда вы загружаете службу (например, из ленивого загруженного модуля), служба становится глобально доступной.
Источник: https://medium.com/@michelestieven/organizing-angular-applications-f0510761d65a
Услуги, предоставляемые в модулях, регистрируются с помощью корневого инжектора. Итак, первый экземпляр, который вы получите, будет доступен для всего приложения.
Но если модули загружаются лениво, у них обоих будет отдельный экземпляр для каждого модуля.
См .: https://angular.io/guide/dependency-injection#injectable-ngmodule-or-component