#15: 🔋 Créer un service
Dans Angular, un service est une classe JavaScript qui est responsable d'effectuer une tâche spécifique nécessaire à votre application. Dans notre application todo-list, nous allons créer un service qui sera responsable de l'enregistrement et de la gestion de toutes les tâches, et nous l'utiliserons en l'injectant dans les composants.
Créer un service avec Angular CLI:
ng g s services/todo-lists est le raccourci de... vous l'avez deviné - service. Cette commande va générer le service TodoListService dans le fichier src/app/services/todo-list.service.ts. Il a le décorateur @Injectable qui lui permet d'utiliser l'injection de dépendance.
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class TodoListService {
constructor() { }
}Partager des données
Maintenant nous pouvons déplacer le tableau todoList du composant list-manager vers notre nouveau service. Allez dans le fichier src/app/services/todo-list.service.ts, et ajoutez ce code à l'intérieur de la classe TodoListService juste au-dessus du constructor :
private todoList: TodoItem[] = [
{title: 'install NodeJS'},
{title: 'install Angular CLI'},
{title: 'create new app'},
{title: 'serve app'},
{title: 'develop app'},
{title: 'deploy app'},
];Assurez-vous que l'interface TodoItem est bien importée :
Créer une méthode pour retourner la liste
Nous allons ajouter une méthode getTodoList qui va retourner le tableau todoList. Le service ressemblera à ceci:
Injecter et utiliser le service
Après avoir créé le service, nous pouvons l'injecter dans notre composant list-manager. Dans Angular, l'injection de dépendance est très simple. Nous le passons en paramètre dans le constructeur - le type de paramètre est le nom de la classe du service. Angular attribue l'instance qu'il a créée au nom du paramètre, et nous pouvons l'utiliser à partir du constructeur. Avant de l'implémenter nous-mêmes, voyons comment cela fonctionne. Voici le constructeur de la classe ListManagerComponent:
Typescript nous aide en nous donnant un raccourci pour assigner le paramètre à un membre de classe. En ajoutant private ou public avant le nom du paramètre, il est automatiquement assigné à this. Donc au lieu de déclarer et d'assigner la propriété par nous-mêmes :
... nous pouvons réduire beaucoup de code comme ceci:
Utilisons le service dans le composant list-manager.
Supprimez la liste codée en dur du composant, ne gardez que la déclaration de la propriété
todoListavec son type.Injectez le
TodoListServicepar le constructeur.
Assurez-vous que le
TodoListServiceest bien importé.
Récupérez la liste du service dans le
constructoret l'assigner à notre propriété.
Vous n'avez pas besoin de changer quoi que ce soit dans le modèle puisque nous assignons la liste à la même propriété que nous avons utilisée auparavant. Il semble que rien n'ait changé, mais vous pouvez vérifier que la liste provient du service en la changeant à partir de là (ajout d'un élément, changement de titre, etc.).
Si la liste n'est pas affichée et qu'aucune erreur ne se produit lors de la compilation, le projet pourrait ne pas être synchronisé avec l'ajout du fichier de service. Arrêtez l'exécution de ng serve dans le terminal en cliquant sur Ctrl+C et exécutez-le à nouveau.
Last updated