AceReady
Angular
Question 1 sur 15
Facile

Comment fonctionne la détection de changements (change detection) dans Angular, dans les grandes lignes ?

Réponse

Angular maintient un arbre de composants, et à chaque cycle de détection de changements, il parcourt cet arbre pour comparer la valeur actuelle des propriétés liées au template avec leur valeur précédente, et met à jour le DOM si une différence est détectée. Historiquement, ce cycle est déclenché par Zone.js, qui intercepte les événements asynchrones du navigateur (clics, timers, requêtes HTTP) pour savoir quand relancer une passe de détection sur toute l'application. Avec les versions récentes d'Angular et les signals, une partie de cette détection devient plus fine et ciblée, sans dépendre uniquement de Zone.js.

Piège classique

Le piège est de croire que la détection de changements ne se déclenche que sur une action utilisateur directe : un setTimeout, une promesse résolue ou une réponse HTTP déclenchent tout autant un cycle de détection, ce qui explique certains comportements de performance inattendus.