我正在通过@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();
}
}
答案 0 :(得分:0)
根据我从给定信息中了解到的信息,即使ngOnChanges
导致文件因其他属性的更改而下载,它也应该触发最后下载文件的下载。您确定cpDownloadedFile
不会在其他地方更改吗?
尝试将if
条件替换为以下内容,
if (this.cpDownloadedFile && changes.cpDownloadedFile &&
changes.cpDownloadedFile.currentValue !== changes.cpDownloadedFile.previousValue )
{ /* download code */ }