Table des matières

Présentation

Un service a pour but d'étendre les fonctionnalités d'un composant. Le composant ne doit contenir que la partie affichage. Et donc il lui faut un service pour la partie logique.

Et il faut utiliser un service et non pas des méthodes statiques car un service peut s'appeler depuis la partie HTML, ce qui n'est pas le cas d'une méthode statique.

Base

Pour générer un service:

ng g s VersionService
import { Injectable } from '@angular/core';
 
@Injectable({
  providedIn: 'root'
})
export class VersionService {
}

Et injecter le service dans la classe en tant que membre.

private versionService = inject(VersionService);

En mettant providedIn: 'root', c'est la même instance de VersionService qui sera partagée dans l'ensemble du programme.

Multiples instances

Si on veut avoir plusieurs instances où certains composants gèrent l'instanciation de la classe pour les composants enfants, il faut:

@Injectable({
  providedIn: null
})
@Component({
  ...
  providers: [VersionService],
})