ImmutableService 需要实现 getRowNodeId() 回调,您的行数据需要 ID

mil*_*ila 5 ag-grid

我尝试添加

[deltaRowDataMode]="true"
Run Code Online (Sandbox Code Playgroud)

到我的网格并调用

this.gridApi.setRowData(this.rowData);
Run Code Online (Sandbox Code Playgroud)

但代码抛出错误

ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!
Run Code Online (Sandbox Code Playgroud)

推../projects/secdo-infra-lib/node_modules/ag-grid-community/dist/lib/rowModels/clientSide/immutableService.js.ImmutableService.createTransactionForRowData @ immutableService.js:38 推../projects/secdo-infra -lib/node_modules/ag-grid-community/dist/lib/gridApi.js.GridApi.setRowData @ gridApi.js:151

在网上查了一下,我读到 getRowNodeId 如果未设置,则会自动生成,所以我不明白为什么会引发错误。

Pra*_*hat 5

来自文档

为了使 deltaRowDataMode 正常工作,您必须通过实现 getRowNodeId() 回调来提供行节点的 ID。

网格按照以下规则计算增量变化:

如果新项目的 ID 在网格中没有相应的项目,则它是“添加”。
如果新项目的 ID 在网格中确实有对应的项目,则比较对象引用。如果对象引用不同,则为更新,否则没有任何内容(从事务中排除)。
如果网格中的某些项目在新数据中没有对应的项目,则它是“删除”。

您可以getRowNodeId()通过为每行返回唯一 id 的方式来实现。例如

this.getRowNodeId = function(data) {
  return data.id; //id is a field here
};
Run Code Online (Sandbox Code Playgroud)

这个官方例子有更多细节