Я анализирую zip-файл с изображениями, на которые я хочу ссылаться с помощью blobURL в объекте filesFromZip
, и перебираю его с помощью ngFor, чтобы отобразить изображения на странице.
Это выглядит так
filesFromZip = {};
let zip = new JSZip();
zip.loadAsync(zipfileFromInput)
.then(function (zip) {
for (let file in zip.files) {
let fileInZip = zip.files[file];
zip.file(fileInZip.name)
.async("arraybuffer")
.then(function (content) {
let buffer = new Uint8Array(content);
let blob = new Blob([buffer.buffer]);
// here is where I want to push this object into the filesFromZip object somehow....
return {
fileName: fileInZip.name,
blobURL: URL.createObjectURL(blob)
};
});
}
});
в шаблоне:
<md-card *ngFor="let file of filesFromZip">
<h3 md-line>{{file.fileName}}</h3>
<img src="{{file.blobURL}}">
</md-card>
Как я могу получить данные из промиса на filesFromZip
?
Я пытался просто вставить его в filesFromZip
, но это дает мне эту ошибку:
error_handler.js: 47 ИСКЛЮЧЕНИЕ: неперехвачено (в обещании): TypeError: невозможно прочитать свойство «асинхронное» с нулевым значением
Я действительно борюсь с асинхронностью и Angular 2. Кто-нибудь, кто может направить меня в правильном направлении?