我有一个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;
}