angular создает 2 экземпляра службы при ленивой загрузке модулей - PullRequest
0 голосов
/ 09 июля 2020

https://angular.io/guide/providers Здесь упоминается, что в модулях с отложенной загрузкой компоненты получают локальные экземпляры служб, а не экземпляры уровня root. Другие компоненты модуля используют экземпляр уровня root. Означает ли это, что при использовании отложенной загрузки создается 2 экземпляра?

Пример:

  1. У нас есть Root Модуль AppModule, в котором мы создали службу (ServiceA ) и внедрен на уровне root, но теперь мы не предоставляем эту услугу поставщикам AppModule [] только вот так: import: [BrowserModule, RouterModule.for Root (routes)], provider: [],

  2. Теперь в моем лениво загружаемом модуле я должен использовать ту же службу (ServiceA), просто импортировав ее в какой-либо компонент лениво загруженного модуля.

Вопрос: Создает ли это отдельный экземпляр службы (ServiceA) в модулях с отложенной загрузкой? Ответ: В идеале он должен создать только один экземпляр,

Но из-за этой строки я запутался

введите описание изображения здесь

Пожалуйста, помогите мне с этим разобраться.

1 Ответ

0 голосов
/ 09 июля 2020

на основе вашего описания,

  • вы явно не определяете службу в массиве провайдера модуля.
  • поэтому, если ваша служба имеет декоратор @Injectable() ({ providedIn: 'Root' }) , ваше приложение root и приложение с отложенной загрузкой будут иметь один и тот же экземпляр службы.

, как определено в документации, если вы начали указывать поставщиков для определенных c модулей или компонентов, именно так вы может выполнить sh иметь несколько экземпляров

...