Когда работает конструктор инжектированной службы в угловых трассах? - PullRequest
0 голосов
/ 23 ноября 2018

В Angular 7, если у нас есть служба, объявленная как @Injectable ({обеспечиваетIn: 'root'}), когда выполняется ее конструктор?Выполняется ли он при создании компонента, который его использует (в качестве зависимости), или он ожидает, пока метод в этом сервисе не будет впервые вызван?

Примечание. Поскольку сервис является одноэлементным, я использую сервисконструктор для инициализации некоторых значений.Я мог бы создать метод «Initialize ()» и вызвать его вместо этого в конструкторе компонента, но я нахожу этот подход немного грязным.

1 Ответ

0 голосов
/ 23 ноября 2018

Конструктор класса, декорированный декоратором Injectable, вызывается при инициализации этого класса / службы инжектором определенной области видимости.Вы не можете иметь несколько экземпляров одной и той же службы в одной области, если только вы не принудительно ее предоставите, предоставив услугу через { provide: MyService, useClass: MyService, multi: true }.

Опция provideIn определяет область, к которой принадлежит служба, поэтому, используяprovideIn: 'root' говорит DI ввести сервис с помощью RootInjector.И поскольку служба не будет инициализироваться несколько раз в одной области действия, конструктор этой службы вызывается только один раз, когда DI должен внедрить эту службу в другой компонент / службу / модуль в первый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...