diff --git a/projects/igniteui-angular/src/lib/grids/cell.component.ts b/projects/igniteui-angular/src/lib/grids/cell.component.ts index eaacd3064e5..3c739bf8ff8 100644 --- a/projects/igniteui-angular/src/lib/grids/cell.component.ts +++ b/projects/igniteui-angular/src/lib/grids/cell.component.ts @@ -926,6 +926,10 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy, CellT this.highlight.lastSearchInfo.caseSensitive = this.grid.lastSearchInfo.caseSensitive; this.highlight.lastSearchInfo.exactMatch = this.grid.lastSearchInfo.exactMatch; } + const isInEdit = this.grid.rowEditable ? this.row.inEditMode : this.editMode; + if (this.formControl && this.formControl.value !== changes.value.currentValue && !isInEdit) { + this.formControl.setValue(changes.value.currentValue); + } } } diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts index 7cfb9e4dc46..d5d97f56799 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts @@ -1165,6 +1165,27 @@ describe('IgxGrid - Cell Editing #grid', () => { expect(cell.value).not.toEqual(cellValue); expect(cell.value).toEqual(newValue); }); + + it('should update editValue when externally changing grid data.', () => { + const cell = grid.getCellByColumn(0, 'fullName'); + cell.editMode = true; + fixture.detectChanges(); + + expect(cell.editMode).toBeTruthy(); + expect(cell.editValue).toBe('John Brown'); + + fixture.detectChanges(); + cell.editMode = false; + fixture.detectChanges(); + + grid.data[0].fullName = "Test"; + grid.cdr.detectChanges(); + + cell.editMode = true; + fixture.detectChanges(); + expect(cell.editMode).toBeTruthy(); + expect(cell.editValue).toBe('Test'); + }); }); describe('Integration tests', () => {