• Overview
@angular/core

NgZoneOptions

interface

Used to configure event and run coalescing with provideZoneChangeDetection.

  
    interface NgZoneOptions {}
  
  

eventCoalescing

boolean | undefined

Optionally specify coalescing event change detections or not. Consider the following case.

          
<div (click)="doSomething()">  <button (click)="doSomethingElse()"></button></div>

When button is clicked, because of the event bubbling, both event handlers will be called and 2 change detections will be triggered. We can coalesce such kind of events to trigger change detection only once.

By default, this option is set to false, meaning events will not be coalesced, and change detection will be triggered multiple times. If this option is set to true, change detection will be triggered once in the scenario described above.

runCoalescing

boolean | undefined

Optionally specify if NgZone#run() method invocations should be coalesced into a single change detection.

Consider the following case.

          
for (let i = 0; i < 10; i ++) {  ngZone.run(() => {    // do something  });}

This case triggers the change detection multiple times. With ngZoneRunCoalescing options, all change detections in an event loop trigger only once. In addition, the change detection executes in requestAnimation.

ignoreChangesOutsideZone

boolean | undefined
@deprecated

This option was introduced out of caution as a way for developers to opt out of the new behavior in v18 which schedule change detection for the above events when they occur outside the Zone. After monitoring the results post-release, we have determined that this feature is working as desired and do not believe it should ever be disabled by setting this option to true.

When false, change detection is scheduled when Angular receives a clear indication that templates need to be refreshed. This includes:

  • calling ChangeDetectorRef.markForCheck
  • calling ComponentRef.setInput
  • updating a signal that is read in a template
  • attaching a view that is marked dirty
  • removing a view
  • registering a render hook (templates are only refreshed if render hooks do one of the above)
Jump to details