Я загружаю файл на узел IPFS, который использует функцию прогресса для обработки обновлений.Как вы можете видеть, я связал this с функцией обработчика, чтобы он мог обращаться ко всем необходимым переменным
//This method controls uploading the waveform to IPFS
uploadWaveform()
{
this.ipfs.files.add(buf, {progress:this.handler.bind(this)})
.then((result) => {
console.log("All done!");
this.progressText = "All Done!";
});
}
Функция обработчика прогресса - это простая функция, которая просто обновляет переменную uploadProgress ивыглядит так:
handler (p) {
this.uploadProgress = Math.round(100*p/this.fileSize);
}
Я использую угловую индикаторную строку ng-bootstrap примерно так:
<ngb-progressbar [value]="uploadProgress">
<i>{{progressText}}</i>
</ngb-progressbar>
Когда я загружаю файл, он загружается правильно, и функция прогресса работает корректно.
Однако переменная uploadProgess не обновляется в индикаторе выполнения ng-bootstrap.Если я щелкну где-нибудь внутри приложения, оно обновит значение, но не раньше.
Я знаю, что оно на самом деле обновляется внутри компонента, потому что если я поставлю тайм-аут, чтобы вывести значение progressText через 5 секундпосле завершения загрузки оно отражает обновленное значение!
setTimeout(() => {
console.log("this.progressText = " + this.progressText);
}, 5000);
У кого-нибудь есть идеи, почему компонент не обновляется?Я предполагаю, что это какая-то странная проблема с привязкой ... Заранее спасибо.