Обратите внимание, что я автор Angular-Slickgrid. Из вопросов и ответов, которые я видел, мне кажется, что мне не хватало этой функции, описанной в моих вики (есть много вики, пожалуйста, прочтите их), и поэтому я обновил оба вики Экспорт в Excel и Экспорт в файл (CSV / TabDelimited) , Пример группировки - это единственная демонстрационная версия, показывающая эту функцию, поскольку единственная, которая может иметь много данных (если вы решите использовать строки по 50 КБ)из демо и используйте группировку).
Вот обновленная вики для экспорта в Excel
Вариант 1 (рекомендуется)
Просмотр
<span [hidden]="!processing">
<i class="fa fa-refresh fa-spin fa-lg fa-fw"></i>
</span>
<angular-slickgrid gridId="grid2"
[dataset]="dataset"
[columnDefinitions]="columnDefinitions"
[gridOptions]="gridOptions"
(onGridBeforeExportToExcel)="processing = true"
(onGridAfterExportToExcel)="processing = false"
(onAngularGridCreated)="angularGridReady($event)">
</angular-slickgrid>
Компонент
export class MyComponent() implements OnInit {
processing = false;
}
Согласно ответу @ Wingnod, вы также можете подписаться на событие в своем коде, но лучше просто использовать генераторы событий (onGridBeforeExportToExcel)
, так как вам не нужно заботиться об отмене подписки, а кодочиститель. Если по какой-то причине вы хотите подписаться на событие, вы можете сделать это следующим образом:
Вариант 2 (не рекомендуется)
Просмотр
<angular-slickgrid gridId="grid2"
[dataset]="dataset"
[columnDefinitions]="columnDefinitions"
[gridOptions]="gridOptions"
(onAngularGridCreated)="angularGridReady($event)">
</angular-slickgrid>
Компонент
export class GridGroupingComponent implements OnInit, OnDestroy {
exportBeforeSub: Subscription;
exportAfterSub: Subscription;
ngOnDestroy() {
this.exportBeforeSub.unsubscribe();
this.exportAfterSub.unsubscribe();
}
angularGridReady(angularGrid: AngularGridInstance) {
this.angularGrid = angularGrid;
// display a spinner while downloading
this.exportBeforeSub = this.angularGrid.exportService.onGridBeforeExportToFile.subscribe(() => this.processing = true);
this.exportAfterSub = this.angularGrid.exportService.onGridAfterExportToFile.subscribe(() => this.processing = false);
}
}
Вы можете видеть, что Вариант 1 намного чище и проще в реализации.