Я работаю над проектом Angular4.Мне возвращают Blob из моего вызова API, затем я конвертирую его в base64, но не могу сохранить его в массив изображений (поэтому я могу показать его с *ngFor
позже).
Вот мойВызов API:
getImg(): Observable<Blob> {
const path = *can't show this part*;
return this.http.get(path, { responseType: "blob" });
}
И вот что я попробовал до сих пор:
Эта функция имеет ошибку в строке this.images[i] = reader.result;
, потому что она говорит Property 'images' does not exist on type 'FileReader'
images: Array<any> = [];
getImages(): void {
for (var i = 0; i < this.myData.length; i++) {
this.myApiCalls.getImg()
.subscribe(res => {
var reader = new FileReader();
reader.readAsDataURL(res);
reader.addEventListener("loadend", function () {
this.images[i] = reader.result;
});
},
err => {
console.log(err.message)
});
}
}
Другая вещь, которую я пробовал, - это обратные вызовы, но я все еще получал ошибку, в том же столбце, но для другой вещи.Там написано 'this' implicitly has type 'any' because it does not have a type annotation.
getImages(): void {
for (var i = 0; i < this.myData.length; i++) {
this.myApiCalls.getImg()
.subscribe(res => {
this.readImageFile(res, function(e: any) {
this.fields[i] = e.target.result;
});
},
err => {
console.log(err.message)
});
}
}
readImageFile(response: Blob, callback: any): void {
var reader = new FileReader();
reader.readAsDataURL(response);
reader.onloadend = callback
}
Итак, я вернул данные правильно, но проблема в том, что мне не удалось сохранить их в массив.Если вы, ребята, сможете помочь мне решить эту проблему, я был бы очень счастлив.Спасибо.