Cours Angular · Module 5: Services et DI

La hiérarchie des injecteurs

2 min de lecture
Dans cette leçon4

Angular possède une structure hiérarchique d'injecteurs - comme un système d'approvisionnement allant du Shogun aux Daimyo jusqu'aux châteaux individuels.

Les niveaux d'injecteurs

1Root Injector (Shogun)
2    ↓
3Module Injectors (Daimyo)
4    ↓
5Element Injectors (Castles)
6    ↓
7Component Injectors (Halls)

Les options de providedIn

1// 1. Root - Singleton pour toute l'application
2@Injectable({ providedIn: 'root' })
3export class GlobalService { }
4
5// 2. Any - Nouvelle instance pour chaque module en lazy loading (dépréciée depuis Angular 15, à éviter dans le nouveau code)
6@Injectable({ providedIn: 'any' })
7export class ScopedService { }
8
9// 3. Platform - Partagé entre plusieurs applications Angular
10@Injectable({ providedIn: 'platform' })
11export class SharedService { }

Providers dans un composant

1@Component({
2  selector: 'app-dojo',
3  standalone: true,
4  providers: [
5    TrainingService  // Nouvelle instance pour chaque instance du composant
6  ],
7  template: `...`
8})
9export class DojoComponent {
10  private training = inject(TrainingService);
11}

Providers vs providedIn: 'root'

FeatureprovidedIn: 'root'providers: []
InstanceSingletonPar composant/module
Tree-shakingOuiNon
Lazy loadingOptimalNécessite un import
UsageLa plupart des servicesServices par instance

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. Que signifie 'providedIn: root' dans le décorateur @Injectable ?

  2. 2. Que se passe-t-il si on ajoute un service à 'providers' dans le décorateur @Component ?

Voici 2 des 4 questions de cette leçon. Réponds aux autres dans le jeu.

Tâches pratiques dans le jeu

  • Tri vertical

    Ordonne les niveaux d'injecteurs du plus haut au plus bas :

  • Clique dans l'ordre

    Ordonne sur une seule ligne l'entrée qui enregistre un service au niveau du composant :

  • Éditeur de code

    Complète le composant avec sa propre instance de CounterService dans providers.

Articles utiles