Асинхронный экспорт в Excel в Angular KendoUI экспортирует пустую коллекцию
Я пытаюсь заставить асинхронный экспорт в Excel работать в одной из наших таблиц, но я постоянно получаю пустой файл xsls только с заголовками коллекции.
Данные правильно отображаются в сетке с фильтрацией и разбиением на страницы.
Я попытался следовать документам здесь без успеха, вот моя реализация:
Соответствующие части в моем component.ts
:
@Input() collection$: Observable<User[]>;
ngOnInit() {
this.allData = this.allData.bind(this);
}
allData(): Observable<GridDataResult> {
return this.collection$.pipe(
map(users => ({ data: users, total: users.length }))
);
}
Первым делом я попытался вернуться this.collection$;
но поведение было таким же: пустая коллекция внутри файла Excel, поэтому я попытался вернуть Observable<GridDataResult>
но безуспешно.
Соответствующие части в моем component.html
:
<kendo-grid
[kendoGridBinding]="collection$ | async"
pageSize="10"
[pageable]="true"
[filterable]="true"
>
<ng-template kendoGridToolbarTemplate>
<button type="button" kendoGridExcelCommand icon="file-excel">
Export to Excel
</button>
</ng-template>
<!-- columns -->
<kendo-pager-prev-buttons></kendo-pager-prev-buttons>
<kendo-pager-info></kendo-pager-info>
<kendo-pager-next-buttons></kendo-pager-next-buttons>
<kendo-pager-page-sizes [pageSizes]="[5, 10, 40]"></kendo-pager-page-sizes>
<kendo-grid-excel
fileName="Users.xlsx"
[fetchData]="allData"
></kendo-grid-excel>
</kendo-grid>
Может кто-нибудь пролить некоторый свет на это? Заранее спасибо.
2 ответа
Видимо, это из-за rxjs
версия:
https://github.com/telerik/kendo-angular/issues/1962
Опустившись rxjs
а также rxjs-compat
в 6.2.2
исправил проблему.
ОБНОВИТЬ
Натыкаясь на 6.4.0
также исправляет проблему.
Если вы добавите пакет @progress/kendo-angular-excel-export
и поправьте свой allData()
функция для:
public allData(): ExcelExportData {
const result: ExcelExportData = {
data: this.collection$.pipe(
map(users => ({ data: users, total: users.length })).data
};
return result;
}
Это должно работать