Change Detection

The table implements OnPush change detection which means the dirty checking checks for immutable data types. That means if you do object mutations like:

this.rows[i]['gender'] = 'Female';

The table will not detect a change! Instead if you do a change like this, you need to do:

this.rows[i]['gender'] = 'Female';
this.rows = [...this.rows];

This will cause the table to detect the change and update. Some might have concerns that this is a pricey operation, however, it is MUCH cheaper than running ngDoCheck and constantly diffing the array.

For more information, I recommend this article Angular Change Detection Explained.

Last updated