Injecter des services dans Angular 2 (bêta)
Dans Angular 2, injecter un service dans un composant est simple, mais comment pouvons-nous l'utiliser injection de dépendances (DI) pour transférer des services au-delà des composants ?
Injecter des services en dehors de Composants
Pour y parvenir, nous annotons les prestations souhaitées avec le décorateur @Injectable. Ce décorateur signifie que les paramètres au sein du constructeur de la classe annotée doivent recevoir des injections.
Comprendre le mécanisme d'injection
Le mécanisme DI dans Angular 2 fonctionne sur un arbre de injecteurs reliés selon une structure hiérarchique. Ces injecteurs sont mappés sur l'arborescence des composants, mais il n'y a pas d'injecteurs spécifiques pour les services.
Lorsqu'un service est annoté avec @Injectable, Angular tente de créer ou de récupérer une instance pour ce type de service dans l'injecteur pour l'actuel. chaîne d'exécution.
Exemple : Chaîne d'injection de services
Considérez l'exemple suivant application :
Chaque service et composant est annoté avec @Injectable.
Hiérarchie des injecteurs et injection de services
Dans cette application, nous avons trois injecteurs :
Lors de l'injection de Service1 dans ChildComponent, Angular recherche d'abord un fournisseur Service1 dans l'injecteur ChildComponent, puis dans l'injecteur AppComponent, et enfin dans l'injecteur d'application.
De même, lors de l'injection de Service2 dans Service1, la même recherche Le processus se produit.
Portée du fournisseur et hiérarchie des injecteurs
Ce processus de recherche détermine où instancier et partager les instances de service. Les fournisseurs peuvent être spécifiés à différents niveaux :
Conclusion
Par en tirant parti du décorateur @Injectable et en comprenant le mécanisme DI dans Angular 2, nous pouvons injecter efficacement des services entre composants et services, nous permettant d'organiser et de partager les dépendances selon les besoins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!