Why does an OnPush Angular child not update when its input changes?

Tests OnPush reference equality and manual change detection. Strong answers name: in-place object mutation as the root cause; ChangeDetectorRef.markForCheck or detectChanges to force updates; and Angular Signals as a modern path.
Tests deep knowledge of Angular's OnPush change detection and reference equality. A strong answer names three things in order: first, in-place mutation of objects or arrays is the most common cause because OnPush only checks input references, not deep values; second, ChangeDetectorRef.markForCheck schedules the component for the next cycle while detectChanges runs it immediately; third, Angular v22 Signals provide fine-grained reactivity that bypasses reference checks.
Read the original → angular.dev
- #angular
- #change-detection
- #onpush
- #signals
- #performance
Get five bites like this every day.
Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.