- Введите 100 в A1 → зафиксируйте → измените срабатывает (ожидается).
- Сохранить → вызов из JSON(workbook) для перезагрузки.
- После перезагрузка, A1 выбирается автоматически и выравнивается по левому краю.
- щелкните в другом месте (размытие) без изменения → изменить событие срабатывает (неожиданно).
После перезагрузки листа значение в ячейке A1 автоматически выравнивается по левому краю и фокусируется. Когда фокус потерян, событие изменения запускается, даже если никаких изменений не было. обратитесь к изображению.
Код: Выделить всё
private loadKendoSpreadsheet(workbook?: Workbook): void { const kendoWorkbook = { ...convertWorkbookToKendo(workbook ?? {}), defaultCellStyle: { fontFamily: 'Roboto', fontSize: 12 }, columnWidth: 64, rowHeight: 20 }; try { this.ignoreSpreadsheetChangedEvent = true; const $worksheet = kendo.jQuery(this.spreadsheetEl.nativeElement); let kendoSpreadsheet = $worksheet.data("kendoSpreadsheet"); if (kendoSpreadsheet) { // Reload workbook kendoSpreadsheet.fromJSON(kendoWorkbook); } else { const options: any = { ...kendoWorkbook, toolbar: { /* omitted */ }, change: () => { document.dispatchEvent(new Event('spreadsheetChanged')); }, render: (e: any) => { document.dispatchEvent(new CustomEvent('spreadsheetRendered', { detail: e.sender })); } }; kendoSpreadsheet = $worksheet.kendoSpreadsheet(options).data("kendoSpreadsheet"); } } finally { this.ignoreSpreadsheetChangedEvent = false; } } @HostListener('document:spreadsheetChanged') public onSpreadsheetChanged() { if (this.ignoreSpreadsheetChangedEvent) return; this.worksheetForm.markAsDirty(); } /** * Reset to the saved version of the worksheet */ private resetChanges() { this.worksheetForm.reset(this.worksheet.description); this.canSaveUnchanged = false; this.loadKendoSpreadsheet(this.worksheet.workbook); }

Ожидается- Нет изменений при размытии, если значение ячейки фактически не изменилось.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -on-blur-w