Un Signal ne se modifie pas avec un simple signe égal (=). Angular vous donne deux outils puissants pour le manipuler : set() pour l'écraser, et update() pour le transformer.
On utilise surtout update() pour les calculs mathématiques.
On manipule le texte en direct.
Écrase complètement la valeur précédente. Elle ne s'intéresse pas à ce qu'il y avait avant.
Prend l'ancienne valeur, la modifie dans une fonction, puis sauvegarde le résultat. Idéal pour incrémenter !
import { Component, signal } from '@angular/core';
@Component({
selector: 'app-counter',
template: `
<p>Compteur : {{ counter() }}</p>
<button (click)="resetCounter()">Réinitialiser</button>
<button (click)="incrementCounter()">Incrémenter</button>
`
})
export class SignalMethodsComponent {
counter = signal(0);
nom = signal('angular');
// --- SET (Écrase la valeur) ---
resetCounter() {
this.counter.set(0);
}
resetNom() {
this.nom.set('');
}
// --- UPDATE (Modifie par rapport à l'ancienne valeur) ---
incrementCounter() {
// On reçoit "value" (l'ancien chiffre) et on retourne le nouveau
this.counter.update((value) => value + 1);
}
upperCaseNom() {
// On reçoit "text" (l'ancienne chaine) et on la met en majuscules
this.nom.update((text) => text.toUpperCase());
}
}