我正在通过@input
值向孩子提供可下载的数据。 当用户单击下载链接时,它正在下载文件,没有任何问题。
但是每当发生并观察到ngOnchanges
发生变化时 - 再次触发下载,我正在下载一个未知文件。 那么,如何修复它或如何仅使其仅在用户单击时下载文件?
在用户单击时,我正在触发下载事件。
@Input() cpDownloadedFile: any;
initDownloadFile(fileData) {
this.fileDownloaded.emit(fileData.Id);
}
ngOnChanges() {
change1,
change 2
//other changes goes here
if (this.cpDownloadedFile && changes.cpDownloadedFile) {
const element = document.createElement('a');
element.href = URL.createObjectURL(this.cpDownloadedFile);
element.download = this.fileName.replace(/ /g, '').replace(/_(?=[^_]*$).*(?=.)/g, '');
document.body.appendChild(element);
element.click();
}
}
根据我从给定信息中的理解,即使ngOnChanges
导致文件在其他属性更改时下载,它也应该触发上次下载文件的下载。您确定其他地方的cpDownloadedFile
没有改变吗?
尝试将if
条件替换为以下内容,
if (this.cpDownloadedFile && changes.cpDownloadedFile &&
changes.cpDownloadedFile.currentValue !== changes.cpDownloadedFile.previousValue )
{ /* download code */ }
裁判