У меня есть приложение, которое загружает файлы. То, что я хочу, это отдельный экран, который показывает прогресс загрузки каждого файла.
У меня есть функция, которая загружает файл чертежа (используется класс Cordova FileTransferObject):
getDownloadDrawingObservable(drawing) {
let tempFTO = this.fileTransfer.create();
tempFTO.onProgress((progressEvent) => {
if (progressEvent.lengthComputable) {
this.ngZone.run(() => {
// loading.setContent('Downloading drawing ' + progress + '%')
let progress = Math.round(progressEvent.lengthComputable ? progressEvent.loaded * 100 / progressEvent.total : 0);
drawing["Progress"] = progress + "%";
console.log(progress + "%")
})
} else {
}
})
return Observable.fromPromise(tempFTO.download(drawing["URL"], this.file.dataDirectory + drawing["DrawingNo"] + ".pdf", true, this.getDrawingRequestHeaders))
// return tempFTO.download(URL, this.file.dataDirectory + drawingNo + ".pdf", true, this.getDrawingRequestHeaders)
}
Я думаю о создании отдельного экрана, который показывает, какие файлы загружаются в данный момент и каков их прогресс.
Я думаю об использовании предмета поведения для этого. Идея заключается в том, что я подпишусь на тему поведения на экране «Мои загрузки», и что содержание темы будет постоянно обновляться в логике загрузки и выполнения.
Но работая над этим, я понял, что для этого вам нужно создать объект, что-то вроде этого (имя чертежа, загруженный прогресс):
{drawing1: 55, drawing2: 30}
И постоянно обновлять определенную часть объекта внутри объекта поведения.
Мой вопрос (ы); это правильно? Это лучший способ сделать это? Можете ли вы просто обновить часть объекта BehaviorSubject и next () , чтобы обновить значение на экране?
Буду признателен за любую помощь.
Спасибо,
Бен.