TypeScript - 边缘兼容的CSV文件导出功能

时间:2018-01-10 19:42:57

标签: javascript csv typescript

我有一个TypeScript功能可以创建和下载一个CSV文件,该文件在Chrome中完美运行,但在Edge中完全没有。如果我尝试在Edge中执行此操作,它根本不会执行任何操作。没有控制台错误或任何东西,但是当我试图关闭窗口时,无论我等待多久,它都说我还在下载文件。

那么,我如何使以下代码兼容Edge和Chrome?

async exportData() {
    let exportItems = await this.exportApiService.getAll().first().toPromise(); 
    // Gets all of the items from the API that need to be put into the CSV file

    if (exportItems.length < 1) {
        alert('No records to export');
        this.isBusy = false;
        return;
    }

    let csvContent = 'data:text/csv;charset=utf-8,';

    exportItems.forEach(item => {
        let rowArray = [];

        item.temporaryRate = item.temporaryRate ? item.temporaryRate : null;
        rowArray.push('ID' ? `"${item.id}"` : '');
        rowArray.push('Code' ? `"${item.code}"` : '');
        rowArray.push('Hours_Or_Amount' ? `"${item.hoursOrAmount}"` : '');

        csvContent += rowArray.join(',') + '\r\n';
    });

    let encodedUri = encodeURI(csvContent);
    let link = document.createElement('a');
    link.setAttribute('href', encodedUri);
    link.setAttribute('download', 'File.csv');
    document.body.appendChild(link);
    link.click();
    this.isBusy = false;
}

0 个答案:

没有答案