此问题可能与浏览器缓存和Zone.js有关。您可以使用HttpClient模块下载文件,并在HttpHeaders选项中设置responseType。同时,将下载过程移出Zone.js的范围以避免在下载过程中出现应用程序错误。
以下是示例代码:
import { Component, NgZone } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
@Component({
...
})
export class DownloadComponent {
constructor(
private http: HttpClient,
private zone: NgZone
) {}
downloadFile() {
const url = 'http://example.com/largefile.pdf';
const headers = new HttpHeaders()
.set('Accept', 'application/pdf');
this.http.get(url, {
headers: headers,
responseType: 'arraybuffer' // add responseType option
}).subscribe(
(response: ArrayBuffer) => {
this.zone.runOutsideAngular(() => { // run outside of zone.js
const blob = new Blob([response], { type: 'application/pdf' });
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'myfile.pdf';
link.click();
});
},
error => {
console.error(error);
}
);
}
}