Cours Angular · Module 10: Gestion d'état
Quand utiliser la gestion d'état ?
Dans cette leçon4
Sans bibliothèque (Signals/services)
À utiliser quand :
- Projet petit/moyen
- L'état est majoritairement local aux composants
- Partage simple entre quelques composants
- L'équipe débute avec Angular
1// Service simple avec les Signals
2@Injectable({ providedIn: 'root' })
3export class CartService {
4 private items = signal<CartItem[]>([]);
5 readonly cartItems = this.items.asReadonly();
6 readonly total = computed(() =>
7 this.items().reduce((sum, item) => sum + item.price, 0)
8 );
9
10 addItem(item: CartItem): void {
11 this.items.update(items => [...items, item]);
12 }
13}NgRx SignalStore
À utiliser quand :
- Projet moyen à complexité croissante
- Tu veux tirer parti des Signals
- Tu as besoin de structure, mais pas de Redux complet
- Tu préfères une approche fonctionnelle
NgRx classique
À utiliser quand :
- Projet volumineux et complexe
- De nombreuses sources de données et effets de bord
- Tu as besoin des DevTools pour déboguer
- Équipe expérimentée avec Redux/NgRx
Résumé
| Solution | Complexité | Boilerplate | DevTools | Signals |
|---|---|---|---|---|
| Services + Signals | Faible | Minimal | Non | Oui |
| SignalStore | Moyenne | Faible | Oui | Oui |
| NgRx Store | Élevée | Élevé | Oui | Non* |
*NgRx propose selectSignal() pour l'intégration
1// NgRx with Signals
2@Component({...})
3export class MyComponent {
4 private store = inject(Store);
5
6 // Observable → Signal
7 samurai = this.store.selectSignal(selectAllSamurai);
8 loading = this.store.selectSignal(selectLoading);
9}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. Quelle solution de gestion d'état est recommandée pour un petit projet avec un état principalement local ?
2. À quoi sert la méthode store.selectSignal(selector) dans le NgRx classique ?
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 solutions de gestion d'état de la plus simple à la plus complexe, en termes de complexité et de boilerplate :
- Clique dans l'ordre
Clique sur les éléments dans l'ordre pour construire l'affectation qui transforme un sélecteur NgRx en Signal dans un composant :