Ясир, используйте значение «статус». Нажмите только изменить статус, см. stackblitz
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef> Status </th>
<td (click)="element.status=!element.status" mat-cell *matCellDef="let element">
<mat-icon>
{{ element.status?'check_circle' : 'block' }}
</mat-icon>
</td>
</ng-container>
Если «статус» не в данных, которые вы получили, вы можете добавить легко после подписки на услугу. Представьте, что у вас есть служба, которая возвращает массив данных с уникальной датой свойства, вы можете сделать что-то вроде
dataService.subscribe((res:any)=>{
res.forEach(x=>{
x.status=false;
})
this.data=res
})
ПРИМЕЧАНИЕ: например, в статусе есть только два значения «истина» и «ложь»,это причина того, что щелчок становится таким простым, как (click)="element.status=!element.status"
может иметь два значения: «конец» и «не окончен», тогда столбец становится похожим на
<ng-container matColumnDef="status">
<th mat-header-cell *matHeaderCellDef> Status </th>
<td (click)="element.status=element.status=='finish'?'unfinish':'finish'
mat-cell *matCellDef="let element">
<mat-icon>
{{ element.status=='finish'?'check_circle' : 'block' }}
</mat-icon>
</td>
</ng-container>