Bienvenue dans le tutoriel sur les signals Angular ! Les signals sont la primitive réactive d'Angular : ils permettent de gérer l'état et de mettre à jour automatiquement votre interface quand cet état change.
Dans cette activité, vous allez apprendre à :
- Créer votre premier signal avec la fonction
signal() - Afficher sa valeur dans un template
- Mettre à jour la valeur du signal avec les méthodes
set()etupdate()
Construisons un système interactif de statut utilisateur avec des signals !
-
Importer la fonction signal
Importez la fonction
signaldepuis@angular/coreen haut du fichier de votre composant.import {Component, signal, ChangeDetectionStrategy} from '@angular/core'; -
Créer un signal dans votre composant
Ajoutez à la classe de votre composant un signal
userStatusinitialisé avec la valeur'offline'. -
Afficher la valeur du signal dans le template
Mettez à jour l'indicateur de statut pour afficher le statut actuel de l'utilisateur :
- Créez un binding du signal sur l'attribut class avec
[class]="userStatus()" - Affichez le texte du statut en remplaçant
???par{{ userStatus() }}
<!-- Update from: --> <div class="status-indicator offline"> <span class="status-dot"></span> Status: ??? </div> <!-- To: --> <div class="status-indicator" [class]="userStatus()"> <span class="status-dot"></span> Status: {{ userStatus() }} </div>Remarquez que nous appelons le signal
userStatus()avec des parenthèses pour lire sa valeur. - Créez un binding du signal sur l'attribut class avec
-
Ajouter des méthodes pour mettre à jour le signal
Ajoutez à votre composant des méthodes qui changent le statut de l'utilisateur avec la méthode
set().goOnline() { this.userStatus.set('online'); } goOffline() { this.userStatus.set('offline'); }La méthode
set()remplace entièrement la valeur du signal par une nouvelle valeur. -
Brancher les boutons de contrôle
Les boutons sont déjà présents dans le template. Connectez-les maintenant à vos méthodes en ajoutant :
- Des gestionnaires de clic avec
(click) - Des états désactivés avec
[disabled]quand l'utilisateur a déjà ce statut
<!-- Add bindings to the existing buttons: --> <button (click)="goOnline()" [disabled]="userStatus() === 'online'">Go Online</button> <button (click)="goOffline()" [disabled]="userStatus() === 'offline'">Go Offline</button> - Des gestionnaires de clic avec
-
Ajouter une méthode de bascule avec update()
Ajoutez une méthode
toggleStatus()qui bascule entre online et offline avec la méthodeupdate().toggleStatus() { this.userStatus.update(current => current === 'online' ? 'offline' : 'online'); }La méthode
update()prend une fonction qui reçoit la valeur actuelle et renvoie la nouvelle valeur. C'est utile quand vous devez modifier la valeur existante en fonction de son état actuel. -
Ajouter le gestionnaire du bouton de bascule
Le bouton de bascule est déjà présent dans le template. Connectez-le à votre méthode
toggleStatus():<button (click)="toggleStatus()" class="toggle-btn">Toggle Status</button>
Félicitations ! Vous avez créé votre premier signal et appris à le mettre à jour avec les méthodes set() et update(). La fonction signal() crée une valeur réactive qu'Angular suit, et quand vous la mettez à jour, votre interface reflète automatiquement les changements.
Ensuite, vous apprendrez à dériver un état à partir de signals avec computed !