The ngDoCheck lifecycle hook
gets executed when Angular runs the change detection process. ngOnChanges also gets executed when
changes are detected the difference is that ngOnChanges() detects changes for those properties which are passed
by value. ngDoCheck() detects
changes for those properties also which are passed by reference such as arrays.
For performance reasons OnChanges does not fire when the input property is an
array/object, in these cases we can use ngDoCheck to perform our own custom
change detection.
Let us see how this works with a simple example. We will extend the
example which we used for ngOnChanges,
we will add one more @Input property
to the child component, this time we will add an object instead of a string so
that we can see that ngDoCheck gets
triggered but not ngOnChanges when the object is changed.