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 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.