Lesson 27 / 30

How Angular Updates the DOM

The basics of change detection, and the OnPush strategy.

The default pass

By default, after events like clicks, timers, or HTTP responses, Angular walks the component tree and re-checks each template for changed values, updating the DOM where needed.

OnPush strategy

OnPush tells Angular to skip a component's subtree unless its @Input()s change by reference (or a signal it reads changes) — a common performance win.

@Component({
  selector: 'app-price-tag',
  standalone: true,
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: `<span>{{ price() }}</span>`,
})
export class PriceTagComponent {
  price = input.required<number>();
}

Signals play well with OnPush

Because signals track their own readers precisely, components built around them naturally work well with OnPush — you get the performance benefit almost for free.