我的问题是,我有一个表,每行都有一个匹配框,用来选择行中的数据。不幸的是,当您仅单击复选框所在的行时,该复选框也被声明为已单击。
希望你能理解我的问题。提前感谢
<table mat-table [dataSource]="appState.appData.data.objects" #mm>
<!-- Id Column-->
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef> Id</th>
<td mat-cell *matCellDef="let element"> {{element.id}} </td>
</ng-container>
<!-- Checkbox Column -->
<ng-container matColumnDef="select">
<th mat-header-cell *matHeaderCellDef>
<mat-checkbox (change)="$event ? masterToggle() : null"
[checked]="merkmaleDescSelection.hasValue() && isAllSelected()"
[indeterminate]="merkmaleDescSelection.hasValue() && !isAllSelected()"
[aria-label]="checkboxLabel()">
</mat-checkbox>
</th>
<td mat-cell *matCellDef="let row">
<mat-checkbox (click)="$event.stopPropagation()"
(change)="onCheckedMerkmale($event, row)"
[checked]="merkmaleDescSelection.isSelected(row)"
[aria-label]="checkboxLabel(row)">
</mat-checkbox>
</td>
</ng-container>
正如注释中所指出的,您需要处理整个行元素上的单击事件。
<td mat-cell *matCellDef="let row">
成为
<td mat-cell *matCellDef="let row" (click)="onRowClick(row)">
然后,您需要实现onRowClick(row)
来进行选择。我想这个实现将类似于onCheckedMerkmale($event, row)
。