Вы можете сделать это следующим образом.
Добавить новое свойство boolean
с именем show
в ELEMENT_DATA
.
addShowCheckboxProperty() {
ELEMENT_DATA.map((data: any) => {
data.show = false
});
}
Используйте свойство opacity
в mat-checkbox
, чтобы показать / скрыть флажки следующим образом.
<td mat-cell *matCellDef="let row">
<mat-checkbox [style.opacity]="row.show || selection.isSelected(row) ? 100 : 0"
(click)="$event.stopPropagation()"
(change)="$event ? selection.toggle(row) : null"
[checked]="selection.isSelected(row)"
[aria-label]="checkboxLabel(row)">
</mat-checkbox>
</td>
Обрабатывать mouseover
и mouseleave
события в tr
следующим образом.
HTML
<tr mat-row *matRowDef="let row; columns: displayedColumns;"
(click)="selection.toggle(row)"
(mouseover)="handleMouseOver(row)"
(mouseleave)="handleMouseLeave(row)">
</tr>
TS
handleMouseOver(row) {
const position = row.position;
ELEMENT_DATA.map((data: any) => {
if (data.position === position) {
data.show = true;
}
});
}
handleMouseLeave(row) {
const position = row.position;
ELEMENT_DATA.map((data: any) => {
if (data.position === position) {
data.show = false;
}
});
}
Как вы показываетеВаш checkbox
на mouseover
Я думаю, что нет необходимости выбирать все checkbox
в строке заголовка таблицы. Найти рабочий StackBlitz .