我正在尝试从表格行中取消行选择的绑定,以便单击行中的任何位置都不会选中该复选框。我希望只在单击框本身时才选中该复选框,以便当用户单击其他位置(有点像Gmail收件箱)时可以腾出空间来添加可扩展的行。
我只是不知道如何从行中取消选中复选框。
这是复选框列的标记
<ng-container matColumnDef="select">
<th mat-header-cell *matHeaderCellDef>
<mat-checkbox (change)="$event ? masterToggle() : null"
(click)="$event.stopPropagation()"
[checked]="selection.hasValue() && isAllSelected()"
[indeterminate]="selection.hasValue() && !isAllSelected()"
[aria-label]="checkboxLabel()">
</mat-checkbox>
</th>
<td mat-cell *matCellDef="let row">
<mat-checkbox (click)="$event.stopPropagation()"
(change)="$event ? selection.toggle(row) : null"
[checked]="selection.isSelected(row)"
[aria-label]="checkboxLabel(row)">
</mat-checkbox>
</td>
</ng-container>
答案 0 :(得分:1)
我在您的问题中没有看到相关的模板代码,但是您似乎正在遵循材料example中给出的docs。在这种情况下,mat-table
底部将显示以下代码
<tr mat-row *matRowDef="let row; columns: displayedColumns;"
(click)="selection.toggle(row)">
</tr>
只需删除click
事件即可将row
切换为选定事件
<tr mat-row *matRowDef="let row; columns: displayedColumns;">
</tr>
现在,单击该行将不会选中您的复选框。
注意:这样做也意味着不再需要使用
$event.stopPropagation()
,因此您也可以从模板中删除它。