Является ли использование @Injectable provideIn для любого не загруженного ленивым модулем тем же самым, что и предоставлено в: «root»? - PullRequest
0 голосов
/ 31 августа 2018

Я полностью прочитал документы и, хотя не могу точно определить, где на них ссылаются, у меня сложилось впечатление, что объявление службы в массиве providers загруженного модуля сделает синглтон доступным для области приложения. Если это правда,

Использует ли @Injectable providedIn для любого модуля без загруженной памяти то же самое, что и providedIn: "root"?

1 Ответ

0 голосов
/ 31 августа 2018

Да, это то же самое.

В общем, вы всегда должны просто использовать синтаксис обеспеченныйIn: "root" в объявлении @Injectable. Он даже работает с отложенной загрузкой, когда он только загружен в один модуль, поэтому служба не будет загружаться до угловой загрузки модуля. Это способ лучше построить.

Я думаю, что только 2 исключения из предпочтения предоставляются в 1) Вы хотите объявить это в компоненте. Это приведет к тому, что он не будет одноэлементным, а будет привязан к компоненту 2) Вы используете его в 2 отдельных, но оба лениво загруженных модуля (и он также не используется при начальной загрузке), в этом случае я считаю, что лучший выбор - это загрузить его с готовностью, введя его в AppModule при начальной загрузке.

...