TypeScript:如何在点击事件中获取getSelectedNodes数组的最新单个值?
解决每次点击仅获取当前选中行的rowIndex问题
场景1:只需单选(每次只能选一行)
直接修改ag-Grid的配置,开启单选模式:
// 在gridOptions中添加配置 gridOptions = { // 其他原有配置... rowSelection: 'single' // 设置为单选模式 };
开启后每次点击行时,会自动取消之前的选中项,你的原有代码就能正常返回当前唯一选中的符合条件的rowIndex,不会出现累加情况。
场景2:保留多选但只取本次点击的单行数据
如果要保留多选模式,但每次点击事件仅获取当前点击行的rowIndex,直接从点击事件参数中提取当前节点即可,不用调用getSelectedNodes():
// 以rowClicked事件为例 onRowClicked(event: RowClickedEvent) { const currentNode = event.node; // 仅处理符合条件的行 if (currentNode.rowIndex >= 5) { const currentIndex = [currentNode.rowIndex]; // 此处currentIndex仅包含本次点击的行索引,与之前选中项无关 console.log(currentIndex); } }
场景3:保留多选但每次点击替换原有选中项
如果需要在点击时替换掉之前的所有选中项,仅保留当前点击的行,可以先取消所有选中再选中当前行:
onRowClicked(event: RowClickedEvent) { // 取消所有已选中的行 this.gridApi.deselectAll(); // 选中当前点击的行 event.node.setSelected(true); // 再获取符合条件的行索引 const currentIndex = this.gridApi.getSelectedNodes() .filter((item: any) => item.rowIndex >= 5) .map((count: any) => count.rowIndex); console.log(currentIndex); }
内容的提问来源于stack exchange,提问作者arj
相关产品推荐
相关产品推荐

