Maison >interface Web >js tutoriel >Comment puis-je injecter des services dans d'autres services dans Angular 2 ?
Injecter des services dans d'autres services dans Angular 2 (bêta)
L'injection de services dans des composants est simple à l'aide du décorateur @Component. Cependant, injecter des services en dehors des composants pose un défi.
Énoncé du problème
Dans Angular 2, nous voulons éviter d'instancier manuellement des services au sein d'autres services, comme le montre le extrait de code suivant :
export class MyFirstSvc { } export class MySecondSvc { constructor() { this.helpfulService = new MyFirstSvc(); } } export class MyThirdSvc { constructor() { this.helpfulService = new MyFirstSvc(); } }
Solution
La solution consiste à utiliser le décorateur @Injectable sur les services que l'on souhaite injecter. Ce décorateur prépare les paramètres constructeur du service pour l'injection de dépendances.
Hiérarchie des injecteurs
Pour comprendre le fonctionnement de l'injection, il est essentiel de saisir le concept de hiérarchie des injecteurs :
Lors de l'injection d'un service dans un composant ou un autre service, Angular2 recherche le fournisseur dans l'ordre suivant :
Partage de fournisseur
La hiérarchie des injecteurs permet un partage contrôlé des instances de service :
Exemple
@Injectable() export class Service1 { constructor(service2:Service2) { this.service2 = service2; } getData() { return this.service2.getData(); } }
@Injectable() export class Service2 { getData() { return [{ message: 'message1' }, { message: 'message2' }]; } }
Dans cet exemple :
Ressources
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!