Я пытаюсь построить компонент в Angular 2, который принимает массив объектов данных и имя файла из родительского компонента, создает файл csv с данными и загружает файл для пользователя в браузере, используя предоставленное имя файла. В принципе, восстанавливаемый компонент ExportCSV. У меня возникли проблемы с поиском надлежащего способа использования Observable для достижения этого. Данные должны быть извлечены из Rest API родительским компонентом, прежде чем дочерний компонент должен работать на нем. Родительский компонент имеет отдельную связанную службу для извлечения данных. Эти данные выгружаются на сервер, а экспорт должен содержать весь набор результатов, а не только текущую страницу на клиенте. Это вынуждает получить весь набор результатов при нажатии кнопки экспорта. Если у кого-то есть опыт с этим, пожалуйста, укажите направление, как я должен это сделать. Заранее спасибо!Как получить асинхронные данные от одного углового компонента к другому
Вот некоторые фрагменты соответствующих кода:
export class InvoiceListComponent {
invoiceFullList: Observable<Array<Invoice>>;
...
setExportable(event: any) {
let params = new InvoiceSearchFilter();
this._invoiceService.getAllInvoices(params)
.subscribe(
(response: any) => {
this.invoiceFullList = response.json().data;
},
() => { });
}
}
<csv-export [dataList]="invoiceFullList | async" [fileName]='exportFileName' (exportClickEvent)="setExportable($event)"></csv-export>
export class CsvExportComponent {
@Input() dataList: Array<any>;
@Input() fileName: string = 'data-export';
@Output() exportClickEvent: EventEmitter<{}> = new EventEmitter();
...
exportIt() {
this.exportClickEvent.emit();
if (!this.dataList || this.dataList.length < 1) {
return false;
}
this.buttonEnabled = 'disabled';
this.convertToCSV(this.dataList);
}
...
}
<button name="export-button" type="button" class="btn btn-primary btn-export" [disabled]='buttonEnabled' (click)="exportIt()">CSV Export</button>
Пожалуйста, пост код, который показывает, что вы пытаетесь достичь, что вы пробовали, и где ты не смогли. –