web-dev-qa-db-fra.com

Angular décorateur de service fourniEn effet racine sur le chargement paresseux

Je me demande comment le nouveau décorateur de service angular

@Injectable({
    providedIn: 'root'
})

fonctionne en conjonction avec le chargement paresseux. Ce qui signifie que si j'ai un module chargé paresseusement, avec un service fourni en racine, cela inclura-t-il le service spécifique dans le code de base des applications, alias. la racine de l'application chunks.js ou cela chargera-t-il toujours paresseusement le service et en fera-t-il plus tard un singleton global, lorsque je chargerai ce module paresseusement.

Infos fournies

https://angular.io/guide/ngmodule-faq

25

Oui, dans ce cas, ce ne sera qu'une partie de vos modules/morceaux chargés paresseux. Lors de l'utilisation de providedIn: 'root' le Angular trouvera automatiquement le moyen parfait:

  1. Le service sera disponible dans toute l'application en tant que singleton sans avoir besoin de l'ajouter au tableau des fournisseurs d'un module (comme Angular <= 5).
  2. Si le service n'est utilisé que dans un module chargé paresseusement, il sera chargé paresseusement avec ce module
  3. S'il n'est jamais utilisé, il ne sera pas contenu dans la construction (arborescence secouée).

Pour plus d'informations, lisez les documentation et FAQ NgModule

Btw:

  1. Si vous ne voulez pas un singleton à l'échelle de l'application, utilisez plutôt le tableau d'un composant du fournisseur.
  2. Si vous souhaitez limiter la portée afin qu'aucun autre développeur n'utilise jamais votre service en dehors d'un module particulier, utilisez plutôt le tableau du fournisseur de NgModule.
30
Mick