The Angular framework does a lot under the hood to detect changes and update the UI accordingly. Similarly to other frameworks like React or Vue.js, Angular supports data binding to always show the latest data.

While Angular is already a fast framework, we can always improve things. One improvement idea is to reduce the amount of change detection work to keep the UI as smooth as possible. For Angular components, there are two change detection strategies available:

  • Default uses the default CheckAlways strategy in which change detection is automatic until explicitly deactivated. If you don’t specify a strategy, then this will be used.
  • OnPush uses the CheckOnce strategy, meaning that automatic change detection is deactivated until reactivated by setting the strategy to Default. Change detection can still be explicitly invoked by using ChangeDetectorRef.

The OnPush change detection strategy is a good choice for dumb components that typically:

  • Have few or no internal states.
  • Declare Input properties to allow their parent element to provide data.
  • Communicate with their parent element with the help of Output properties.

#javascript

How to Write Tests for Components With OnPush Change Detection in Angular
1.50 GEEK