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

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

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

1 ответ

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

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

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

Другие вопросы по тегам