22. Introduction aux Services
Les services sont des classes destinées à effectuer des tâches spécifiques, généralement une logique qui n'est pas directement liée à la vue, comme la récupération de données, la journalisation (logging), la validation ou la gestion d'un état partagé.
Le décorateur @Injectable()
Toute classe devant être gérée par l'Injecteur de Dépendances d'Angular doit être décorée avec @Injectable().
Utilisez le CLI pour générer un service :
bash ng generate service data/user // Crée src/app/data/user.service.ts
Exemple de service : Logger
typescript import { Injectable } from '@angular/core';
@Injectable({ // Métadonnées providedIn (depuis Angular 6+) providedIn: 'root' }) export class LoggerService { private logs: string[] = [];
log(message: string) {
const timestamp = new Date().toISOString();
const fullMessage = [${timestamp}] ${message};
console.log(fullMessage);
this.logs.push(fullMessage);
}
getLogs(): string[] { return this.logs; } }
La propriété providedIn: 'root'
Par défaut, les services générés utilisent providedIn: 'root'. Cela configure le service pour qu'il soit un singleton (une seule instance existe) pour l'ensemble de l'application. C'est la méthode moderne et privilégiée pour fournir des services à l'échelle de l'application, éliminant le besoin de les lister explicitement dans le tableau providers d' AppModule.