CHAPITRE 10 : LES SERVICES ET L'INJECTION DE DÉPENDANCES
Un composant doit s'occuper de l'affichage. Dès qu'il s'agit de récupérer ou de
partager des données, cela relève d'un service.
1. Pourquoi un service ?
Imaginez trois composants qui ont besoin de la liste des étudiants. Sans service, vous dupliquez le
code trois fois. Avec un service, la logique est écrite une fois et partagée.
Éviter la duplication
Partager des données entre composants
Isoler les appels au serveur
Rendre le code testable
2. Créer un service
ng generate service services/etudiant
# forme abregee
ng g s services/etudiant
Un Observable est une valeur qui arrivera plus tard. Tant qu'on ne s'y abonne pas,
rien ne part : c'est l'oubli classique quand une requête ne semble pas
s'exécuter.
À retenir
Le composant affiche ; le service récupère et partage
providedIn: 'root' donne une instance unique
On reçoit les services dans le constructeur, on charge dans ngOnInit
Un Observable n'émet rien sans subscribe()
Exercices d'application
Exercice 1. Un service de coursCréez un CoursService avec une liste de 5 cours et une méthode qui renvoie ceux de plus de 20 heures. Affichez le résultat dans un composant.
Exercice 2. Données partagéesCréez deux composants utilisant le même service. Dans le premier, ajoutez un élément ; vérifiez qu'il apparaît aussi dans le second.
Exercice 3. Ordre d'exécutionMettez un console.log dans le constructeur et dans ngOnInit. Observez l'ordre et expliquez pourquoi les données se chargent dans le second.
Faites-les dans un vrai projet : c'est en pratiquant que l'on retient.