v22版本ag-grid中用于Angular表单校验的行唯一ID选型咨询
ag-grid v22行唯一标识选择方案
最优方案:前端自定义本地唯一ID
这是最稳妥、不受ag-grid版本影响的实现方式:
- 初始化表格数据、新增/复制行时,统一给每行数据附加一个
localRowId字段,可通过Date.now() + 随机数或者UUID生成,保证单会话内唯一即可 - 在ag-grid的全局配置中添加
getRowNodeId回调,返回每行的localRowId字段,完全和后端返回的业务ID解耦 - 维护FormArray与行的映射关系时,直接以
localRowId为key存储对应索引,不受排序、过滤、分组操作的影响
临时方案:使用_objectId私有属性
针对你当前v22版本的场景,_objectId确实可以直接使用:
- 该属性是ag-grid内部为每个RowNode生成的唯一标识,生命周期和RowNode完全绑定,复制行、排序、过滤、分组都不会改变或重复
- 注意:
_objectId属于ag-grid未对外暴露的私有属性,后续升级ag-grid版本时可能被修改或移除,如果你没有升级计划可以直接使用,否则需要在代码中加注释标记,预留后续兼容逻辑
替代方案:补全RowNode.id逻辑
如果不想新增自定义字段,也可以复用官方的RowNode.id机制:
- 复制生成新行时,前端先临时生成一个唯一ID赋值给新行的对应字段,
getRowNodeId优先返回前端临时ID,待新行提交后端拿到正式业务ID后再做替换即可 - 该方案完全使用ag-grid官方暴露的能力,兼容性最好
内容的提问来源于stack exchange,提问作者siddiq rehman
相关产品推荐
相关产品推荐

