【发布时间】:2018-06-13 14:19:24
【问题描述】:
我正在开发 Angular4 项目。我从 API 调用中返回 Blob,然后将其转换为 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
}
所以我得到了正确返回的数据,但问题是我无法将它保存到数组中。如果你们能够帮助我解决这个问题,我会很高兴。 谢谢。
【问题讨论】:
-
嘿,@HC1122 你试过 iam 所说的评论吗?
标签: angular image typescript filereader