javascript / expert
Snippet
Feingranulare Signal-Gleichheitslogik für tiefen Objektvergleich
Standardmäßig verwenden Angular-Signals die referenzielle Gleichheit (===). Für State-Management auf Expertenniveau, das komplexe Objekte oder immutable Trees umfasst, verhindert eine benutzerdefinierte Gleichheitsfunktion in den Signal-Optionen unnürzige Berechnungen und Template-Re-renders, wenn der Inhalt der Datenstruktur logisch identisch ist, obwohl eine neue Referenz vorliegt.
snippet.js
1
2
3
const userProfile = signal({ id: '001', data: { name: 'Markus', roles: ['admin'] } }, {equal: (a, b) => a.id === b.id && JSON.stringify(a.data) === JSON.stringify(b.data)});
angular
Erklärung
1
const userProfile = signal(..., {
Initialisiert ein Signal mit einem Startobjekt und einem Optionsobjekt.
2
equal: (a, b) => ...
Definiert eine eigene Vergleichsfunktion, um festzustellen, ob sich der Signalwert wirklich geändert hat.