Handsontable перестает отвечать на onDestroy, когда в таблице слишком много данных - PullRequest
0 голосов
/ 24 октября 2019

Я отображаю таблицу Handsontable, используя angular-wrapper таблицы внутри моего приложения в mat-dialog. Я использую таблицу для отображения данных электронных таблиц, и это означает, что внутри таблицы много данных.

Что происходит, когда я закрываю mat-dialog или перехожу на другую страницу, все приложение перестает отвечать на запросынесколько секунд.

Я считаю, что таблица запускает некоторый onChange слушатель во всех ячейках после уничтожения таблицы.

Моя теория такова, что при уничтожении экземпляра таблицы,в экземпляре таблицы происходит прослушивание onChange, которое пытается выполнить некоторую обработку или рендеринг таблицы. Что совершенно не нужно в моем случае, потому что я просто хочу уничтожить таблицу.

Есть несколько вещей, которые я уже пробовал:

  • Использование *ngIf для ручного управленияудалите таблицу перед закрытием панели mat-dialog 1020 *
  • . С помощью hotinstance.destroy() перед закрытием панели mat-dialog

Оба решения позволяют мне перемещаться или закрывать mat-dialogпанель не застряла, но я думаю, что onChange слушатель экземпляра таблицы выдает ошибку следующим образом:

PreviewSheetComponent.html:9 ERROR Error: The "updateSettings" method cannot be called because this Handsontable instance has been destroyed
    at Core.updateSettings (core.js:3691)
    at handsontable-angular.js:251
    at ZoneDelegate.invoke (zone.js:396)
    at Zone.run (zone.js:153)
    at NgZone.push../node_modules/@angular/core/fesm5/core.js.NgZone.runOutsideAngular (core.js:26214)
    at HotTableComponent.push../node_modules/@handsontable/angular/fesm5/handsontable-angular.js.HotTableComponent.updateHotTable (handsontable-angular.js:247)
    at HotTableComponent.push../node_modules/@handsontable/angular/fesm5/handsontable-angular.js.HotTableComponent.onAfterColumnsNumberChange (handsontable-angular.js:301)
    at HotTableComponent.push../node_modules/@handsontable/angular/fesm5/handsontable-angular.js.HotTableComponent.removeColumn (handsontable-angular.js:327)
    at HotColumnComponent.push../node_modules/@handsontable/angular/fesm5/handsontable-angular.js.HotColumnComponent.ngOnDestroy (handsontable-angular.js:669)
    at callProviderLifecycles (core.js:21419)

Это, в свою очередь, приводит к сбою всего приложения.

Мне действительно нужна помощь с этим.

...