diff --git a/projects/igniteui-angular/grids/core/src/api.service.ts b/projects/igniteui-angular/grids/core/src/api.service.ts index 5d918de1a50..b1ed4e2b39a 100644 --- a/projects/igniteui-angular/grids/core/src/api.service.ts +++ b/projects/igniteui-angular/grids/core/src/api.service.ts @@ -320,8 +320,8 @@ export class GridBaseAPIService implements GridServiceType { const transaction: Transaction = { id: rowId, type: TransactionType.ADD, newValue: rowData }; grid.transactions.add(transaction); } else { - grid.data.push(rowData); - grid.data = cloneArray(grid.data); + (grid.data ?? (grid.data = [])).push(rowData); + grid.summaryService.clearSummaryCache(); } grid.validation.markAsTouched(rowId); grid.validation.update(rowId, rowData); @@ -336,8 +336,8 @@ export class GridBaseAPIService implements GridServiceType { const transaction: Transaction = { id: rowID, type: TransactionType.DELETE, newValue: null }; grid.transactions.add(transaction, grid.data[index]); } else { - grid.data.splice(index, 1); - grid.data = cloneArray(grid.data); + (grid.data ?? (grid.data = [])).splice(index, 1); + grid.summaryService.clearSummaryCache(); } } else { const state: State = grid.transactions.getState(rowID); diff --git a/projects/igniteui-angular/grids/core/src/common/pipes.ts b/projects/igniteui-angular/grids/core/src/common/pipes.ts index 9a7d14242fa..734a0d3be7d 100644 --- a/projects/igniteui-angular/grids/core/src/common/pipes.ts +++ b/projects/igniteui-angular/grids/core/src/common/pipes.ts @@ -248,7 +248,10 @@ export class IgxGridTransactionPipe implements PipeTransform { this.grid.dataCloneStrategy); return result; } - return collection; + // Return a shallow copy so downstream pipes and igxGridForOf always + // receive a new array reference when pipeTrigger changes, regardless + // of whether the source array was mutated in place. + return cloneArray(collection); } }