0

我通过@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();
        }

}
4

1 回答 1

0

根据我从给定信息中的理解,即使在ngOnChanges其他属性更改时导致文件下载,它也应该触发最后下载文件的下载。你确定cpDownloadedFile其他地方没有变化吗?

尝试将if条件替换为以下内容,

if (this.cpDownloadedFile && changes.cpDownloadedFile &&
    changes.cpDownloadedFile.currentValue !== changes.cpDownloadedFile.previousValue )
    { /* download code */ }

参考

于 2019-11-28T06:27:17.417 回答