Как правильно справиться с этим сценарием на 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();
        }

}

1 ответ

Насколько я понимаю из данной информации, даже если ngOnChangesвызывает загрузку файла при изменении других атрибутов. Это должно инициировать загрузку последнего загруженного файла. Вы уверены, чтоcpDownloadedFile нигде не меняется?

Попробуйте заменить if условие на следующее,

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

Ссылка

Другие вопросы по тегам