Why do we need ngDoCheck lifecycle hook – Angular ?
This tutorial guides you on what is ngDoCheck and why do we need ngDoCheck lifecycle hook in Angular.
What is ngDoCheck ?
It is a callback method which will get called by Angular after every default change detection runs and it can be used to perform change-detection. The default change detection algorithm checks for bound-property changes.
When the default change detector runs, it calls ngOnChanges() lifecycle hook i.e., ngOnChanges() will get called after a bound-property changes.
And ngDoCheck lifecycle hook will get called after the following lifecycle hooks get invoked; ngOnChanges() and ngOnInit().
- ngOnChanges() – Invoked after a bound input property changes.
- ngOnInit – Invoked once the component is initialized.
- ngDoCheck – Invoked after every change detection run
ngDoCheck(): void Parameters There are no parameters. Returns void
Why do we need ngDoCheck lifecycle hook ?
DoCheck is a lifecycle hook used to invoke a custom change-detection function for a directive. This can be used in addition to the default change-detection run performed by the Angular’s default change-detector.
And when the default change detector detects the bound-property changes, it invokes ngOnChanges() as mentioned above whether you perform any additional change detection or not. Also, note you should not use both DoCheck and OnChanges in order to check changes on the same input.
The following sneppet shows how to use ngDoCheck in your component to call or invoke it’s own change-detection cycle or custom change-detection function.
@Component({selector: 'my-component', template: `...`}) class MyComponent implements DoCheck { ngDoCheck() { // ... } }
For example, to check changes that happens where ngOnChanges() can’t catch them, you can implement your own custom change-detection check as shown below.
ngDoCheck() { if (this.title.name !== this.oldTitleName) { this.changeDetected = true; this.changeLog.push(`DoCheck: Title name changed to "${this.title.name}" from "${this.oldTitleName}"`); this.oldTitleName= this.title.name; } ---- ---- this.changeDetected = false; }
That’s it. You have learnt what is ngDoCheck and why do we need ngDoCheck lifecycle hook in Angular.
Hope it helped 🙂
Also See:
- ViewChild in Angular 9 Example
- Can’t bind to ‘itemElem’ since it isn’t a known property of
- Best way to bundle an angular app for production deployment ?
- Type definition for properties and object literal
- Get index of ngFor element using index as value in attribute
- Global Angular CLI version is greater than your local version
- Upgrade Angular CLI to the latest version Angular 9 or 10 ?
- Configure XAMPP PHP to send mail from localhost ?
- ViewEncapsulation modes and differences
- How to use new static option in ViewChild Angular 9 ?
- Project contents into angular components using ng-content
- Call ngOnInit() again from another function – Angular 9 ?
- ngOnChanges get new value and previous value – Angular