Académique Documents
Professionnel Documents
Culture Documents
Les composants ont besoin de valeurs, de propriétés, de données et de méthodes qui peuvent être
centralisées dans des services, afin de factoriser des comportements communs et de masquer les
détails des méthodes et des données aux composants.
Un service est utilisé pour les tâches qui n’impliquent pas la vue ou la logique d’un composant, mais
aux tâches telles que la récupération de données à partir du serveur, la validation des entrées
utilisateur ou la connexion directe à la console. En définissant ces tâches de traitement dans une
classe de service injectable, ces tâches seront disponibles pour n'importe quel composant.
Un service est une classe accessible à tous les composants de l’application et qui a un objectif bien
défini. Dans Angular, c’est l'injection de dépendances qui rend les services disponibles pour les
composants.
2. Injection de dépendance
L'injection de dépendance (Dependancy Injection) est la partie du framework Angular qui fournit aux
composants un accès aux services et à d'autres ressources. En effet, Angular offre la possibilité
d'injecter un service dans un composant pour le rendre accessible par ce dernier.
Le décorateur @Injectable() définit une classe comme étant un service et permet à Angular de
l'injecter dans un composant en tant que dépendance. De même, le décorateur @Injectable()
indique qu'un composant, une classe, un pipe ou un NgModule dépend d'un service.
Angular crée par défaut un injecteur à l'échelle de l'application pendant le processus de chargement.
Cet injecteur est créer dans le fichier main.ts à l’aide du code :
platformBrowserDynamic().bootstrapModule(AppModule).Il n’est, donc, pas nécessaire de
créer des injecteurs. En revanche, il faut enregistrer des fournisseurs qui rendent disponible le
service là où on a besoins. Ses fournisseurs sont appelés « Providers ».
Un provider est un objet qui indique à un injecteur comment obtenir ou créer une dépendance.
Pour toute dépendance dans une application, il faut enregistrer un fournisseur auprès de l'injecteur
de l'application, afin que l'injecteur puisse utiliser le fournisseur pour créer de nouvelles instances.
Pour un service, le fournisseur est généralement la classe du service elle-même.
@Injectable({
providedIn: 'root'
})
export class MovieService {
constructor() { }
}
------------------------------------------------------------------------------------------------------------------
Le décorateur @injectable signifie que le service peut avoir d’autres dépendances, mais qu’il peut lui-
même être injecté dans d’autres éléments de l’application.
Angular permet d’injecter des services dans les classes des composants (par e.g le service Router
pour le routage) mais également, injecter d’autres services dans le constructeur de la classe du
service lui-même dans la méthode constructor du service.
Pour injecter un service dans un composant, il faut l’ajouter dans les paramètres de la méthode
constructor du composant comme suit :
constructor (Private paramètre : NomService). Par e.g, pour utiliser le service Router d’Angular, on
l’injecte dans la classe du composant au niveau du constructeur comme suit :
constructor (Private router : Router).
La propriété providedIn : ‘root’ signifie qu’on va utiliser la même instance du service dans toute
l’application et qu’on ne doit pas instancier la classe du service.
Pour injecter un service au niveau de l’application, il faut ajouter le service dans la propriété
providers du module souhaité.
L’injection de dépendance Angular permet de centraliser des méthodes, des données et des valeurs
afin que tous les composants d’une application puissent en profiter. L’injection de dépendance est
un mécanisme qui garantit l’utilisation d’une même instance d’un service dans toute l’application