Является ли использование @Injectable provideIn для любого не загруженного ленивым модулем тем же самым, что и предоставлено в: "root"?
Я внимательно прочитал документы и, хотя я не могу точно определить, где на него ссылаются, у меня сложилось впечатление, что объявление службы в загруженном модуле providers
массив сделает синглтон доступным для области приложения. Если это правда,
Использует
@Injectable
providedIn
для любого не лениво загруженного модуля так же, какprovidedIn: "root"
?
1 ответ
Да, это то же самое.
В общем, вы всегда должны просто использовать синтаксис обеспеченный In: "root" в объявлении @Injectable. Он даже работает с отложенной загрузкой, когда он только что загружен в одном модуле, поэтому служба не будет загружаться до угловой загрузки модуля. Это способ лучше построить.
Я думаю, что только 2 исключения для предпочтения в представлении: 1) Вы хотите объявить это в компоненте. Это приведет к тому, что он не будет одноэлементным, но будет привязан к компоненту 2) Вы используете его в 2 отдельных, но оба лениво загруженных модуля (и он также не используется при начальной загрузке), в этом случае я считаю лучшим выбором загружать его с нетерпением, принося его в AppModule при начальной загрузке.