Я пытаюсь обновить ag-grid после массового изменения значений ячеек вместо одного значения за раз. Я знаю, что уже есть метод (cellvaluechanged), который дает вам, какое значение было изменено вместе с api и colDef. Я также попробовал pasteEnd из ag-grid, но это просто работает для вставки, что если пользователь просто редактирует значение ячейки без вставки копии. То, что я пытаюсь сделать, - это иметь метод, который будет вызываться через секунду или две, собирая все значения, измененные в ag-grid, чтобы избежать нескольких раундов до бэкенда. Возможное расширение этого вопроса: Как запустить метод после редактирования значения ячейки в ag-grid?
Html
<ag-grid-angular [ngStyle]="{'height.px': innerHeight}" #agGridLevel class="ag-theme-balham"
[rowData]="rowData" [gridOptions]="gridOptions" [defaultColDef]="defaultColDef" [sideBar]="sideBar"
[columnDefs]="columnDefs" [excelStyles]="excelStyles" [rowSelection]="'multiple'"
(selectionChanged)="onSelectionChanged()" (rowClicked)="onRowClicked($event)"
[suppressCopyRowsToClipboard]="true"
[enableRangeSelection]="true"
(cellValueChanged)="onCellValueChanged($event)"
(gridReady)="onGridReady($event)">
>
</ag-grid-angular>
component.ts file
PS Я знаю, что метод все равно будет вызывать backend несколько раз, даже с таймаутом. Это было просто для того, чтобы показать, что я пытался сделать.
onCellValueChanged(params) {
console.log("Callback onCellValueChanged:", params);
if (params.newValue) {
this.changedValue.push({
field: params.colDef.field,
newValue: params.newValue.trim(),
id: params.data.id
});
setTimeout(() => {
this.updateCellValuesInDb(this.changedValue)
}, 1000);
}
}
Очень помогло бы, если бы кто-нибудь знал, как выполнить массовую загрузку значений всей ячейки, измененных через секунду или две, вместо отправки каждого измененного значения. Пожалуйста, совет.
Спасибо