Мне нужно добавить флажок в таблицу материалов, показывающую несколько строк данных, и если пользователь проверил это, полная строка должна изменить цвет на зеленый или что-то еще.
с этим stackblitz , если пользователь выберет одну строку, она станет зеленой, а если выберет другую, предыдущая выключится, а новая будет окрашена.
Я использовал эту функцию, чтобы получить идентификаторстрока:
changeColor(id)
{
this.coloredRow = id;
}
А вот моя таблица источника данных материала:
<table mat-table [dataSource]="dataSource" matSort matSorActive="unit_date_added" disableClear matSortDirection="asc"
*ngIf="!showSpinner">
<ng-container matColumnDef="select">
<th mat-header-cell *matHeaderCellDef>
</th>
<td mat-cell *matCellDef="let row" (click)="changeColor(row.location_id_auto)" >
<mat-checkbox>
</mat-checkbox>
</td>
</ng-container>
<ng-container matColumnDef="hh_id">
<th mat-header-cell *matHeaderCellDef>HH ID</th>
<td class="alignTd" mat-header *matCellDef="let row">{{row.hh_id}}</td>
</ng-container>
<ng-container matColumnDef="unit_id">
<th mat-header-cell *matHeaderCellDef>UNIT ID</th>
<td class="alignTd" mat-header *matCellDef="let row">{{row.uid}}</td>
</ng-container>
<ng-container matColumnDef="name_en">
<th mat-header-cell *matHeaderCellDef>Unit Type</th>
<td mat-header *matCellDef="let row">{{row.name_en}}</td>
</ng-container>
<ng-container matColumnDef="location_id_auto">
<th mat-header-cell *matHeaderCellDef>Name</th>
<td mat-header *matCellDef="let row">{{row.location_id_auto}}</td>
</ng-container>
<tr class="example-expanded-row mat-column-name" mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr class="mat-column-name" mat-row *matRowDef="let row; let i = index; columns: displayedColumns;" [ngClass]="{'highlight2': coloredRow == row.location_id_auto}">
</tr>
</table>
И стиль CSS:
.highlight2{
background: #42A948; /* green */
}
Текущее поведение таково, что только одинЦвет строки будет изменен.