Angular中如何通过代码取消mat-table指定行的选中状态?
取消SelectionModel中特定行的选中状态
当然有对应的方法啦!你已经熟悉用this.selection.clear()一键清空所有选中状态,但要精准取消特定行的选中,Angular的SelectionModel类提供了专门的deselect()方法来搞定这件事。
1. 取消单一行的选中
如果你已经拿到了要取消选中的那一行的数据对象,直接把它传入deselect()就可以了:
// 假设targetRow是你要取消选中的行数据 this.selection.deselect(targetRow);
2. 取消多行的选中
如果需要一次性取消多个特定行的选中,你可以遍历目标行数组,逐个调用deselect():
// 假设targetRows是包含多个待取消行数据的数组 targetRows.forEach(row => { this.selection.deselect(row); });
小技巧:通过索引定位行来取消选中
如果你只知道要取消的行的索引,那可以先从数据源里取出对应的行数据,再调用取消方法:
// 假设dataSource是你的表格数据源,要取消索引为1的行(第二行) const targetRow = this.dataSource.data[1]; this.selection.deselect(targetRow);
另外,你还可以先用isSelected()方法判断目标行是否处于选中状态,再执行取消操作,避免无效调用:
if (this.selection.isSelected(targetRow)) { this.selection.deselect(targetRow); }
内容的提问来源于stack exchange,提问作者userx
相关产品推荐
相关产品推荐

