在'ngChanges'上处理这种情况的正确方法是什么



我正在通过@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 */ }

裁判

相关内容

  • 没有找到相关文章

最新更新