重置行数据后,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
即编辑后的值应该替换为原始值
红色标记的值应替换为旧值
rowData
和 countryData
分配了相同的数据集。
因此,当您更改网格值时,countryData
也会被修改。
因此,您需要在首次填充 countryData
时深度复制原始数据。并且在尝试重置时,从 countryData
的深层复制数据填充 rowData
。所以,你可以在 rowData
和 countryData
之间没有引用。
深拷贝的一种方法是对相同的数据进行字符串化和解析。喜欢:
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));
});
我正在尝试在编辑后更新 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 即编辑后的值应该替换为原始值
红色标记的值应替换为旧值
rowData
和 countryData
分配了相同的数据集。
因此,当您更改网格值时,countryData
也会被修改。
因此,您需要在首次填充 countryData
时深度复制原始数据。并且在尝试重置时,从 countryData
的深层复制数据填充 rowData
。所以,你可以在 rowData
和 countryData
之间没有引用。
深拷贝的一种方法是对相同的数据进行字符串化和解析。喜欢:
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));
});