Change detection is how Angular knows to refresh templates when state changes. The default strategy checks components on most browser events; ChangeDetectionStrategy.OnPush limits checks to input changes, events, and signal updates.
Why OnPush matters
- Large tables and dashboards avoid redundant template work
- Pairs well with immutable inputs and signals
- Requires discipline—mutating objects in place without signals may not update UI
Signals and CD
Reading a signal in a template registers a dependency—when the signal changes, Angular marks the view dirty efficiently.
Important interview questions and answers
- Q: Default vs OnPush?
A: Default checks broadly; OnPush checks when inputs/signals/events trigger the component. - Q: Does OnPush mean “never updates”?
A: No—it still updates when inputs change, DOM events fire, or async pipe emits.
Self-check
- When would you reach for OnPush on a list row component?
- How do signals reduce surprise stale UI with OnPush?
Interview prep
- OnPush change detection?
Checks a component only when inputs change, events fire, or signals update—reduces work in large trees.