重置行数据后,ag 网格行数据正在更新

ag grid row data is updating after reset the row data

我正在尝试在编辑后更新 ag 网格中的行数据。但是网格中的数据没有更新 我试过

this.gridApi.setRowData(this.rowData);
this.rowData = this.countryData;
this.gridApi.refreshCells({ force: true });

但是 none 的选项在这里有效。

这是我的 stackblitz url

https://stackblitz.com/edit/ag-grid-angular-hello-world-uh7vqn?file=src%2Fapp%2Fapp.component.ts

请帮我看看重置ag gird中数据的方法是什么 单击重置按钮后,我想用旧值刷新 agrid 即编辑后的值应该替换为原始值

红色标记的值应替换为旧值

rowDatacountryData 分配了相同的数据集。

因此,当您更改网格值时,countryData 也会被修改。

因此,您需要在首次填充 countryData 时深度复制原始数据。并且在尝试重置时,从 countryData 的深层复制数据填充 rowData。所以,你可以在 rowDatacountryData 之间没有引用。

深拷贝的一种方法是对相同的数据进行字符串化和解析。喜欢:

this.countryData = JSON.parse(JSON.stringify(data));

工作演示: https://stackblitz.com/edit/ag-grid-angular-hello-world-qr5cfk?file=src%2Fapp%2Fapp.component.ts

https://stackblitz.com/edit/ag-grid-angular-hello-world-yr6yth?file=src%2Fapp%2Fapp.component.ts

我想我明白了你的问题,这是由于对象深拷贝。当您收到数据时,您实际上是在复制同一个对象两次,并且当两个对象的引用保持不变时,您更改了一个对象,认为它不会更改另一个对象,但它也会更改另一个对象。您需要为具有相同值的备份数据创建不同的对象,这应该可以工作

    this.getCountryList().subscribe(data => {
      this.rowData = JSON.parse(JSON.stringify(data));
      this.countryData = JSON.parse(JSON.stringify(data));
    });