【发布时间】:2019-11-14 14:50:27
【问题描述】:
我正在使用 * ngFor 从 html 中的图像加载数据。
为了加载图片,需要执行另一个函数,该函数需要在 * ngFor 中加载的 ID,以查找具有该 ID 的图片。
为了获取图片,我在传递产品 ID 的地方使用了(点击),但目标是在不使用点击的情况下加载图片,即自动加载。
我有什么
HTML
<div class="row tab-pane Galeria">
<div *ngFor="let product of products" class="col-xl-2 col-lg-3 col-md-4 col-sm-6">
<div class="image-item" (click)="fillModal($event, product)">
<a class="d-block image-block h-100">
<homeImage>
<img *ngIf [src]="Images" class="Images img-fluid" alt="">
</homeImage>
</a>
<div class="ImageText" (click)="ImageInfo(product.id)">{{product.name}}</div>
</div>
</div>
</div>
Component.ts
ngOnInit() {
this.GetProducts();
}
GetProducts() {
let self = this;
this.Global.refreshToken().subscribe(function (result) {
self.homeService.getProducts().then(function (resultado) {
if (resultado) {
self.products = resultado;
}
}).catch();
});
}
ImageInfo(id) {
var self = this;
self.Global.refreshToken().subscribe(function (result) {
self.homeService.getImage(id).then(function (resultado) {
if (resultado) {
self.Images = resultado;
}
}).catch();
});
}
Service.ts
getProducts(): Promise<any> {
let self = this;
let urlAux = self.url + "/Products/GetProducts";
return axios.get(urlAux, {
headers: {
Authorization: 'Bearer ' + localStorage.getItem("access_token")
}
})
.then(this.extraData)
.catch(this.handleErroPromisse);
}
getImage(id): Promise<any> {
let self = this;
let urlAux = self.url + "/Products/GetImage/" + id;
return axios.get(urlAux, {'responseType': 'arraybuffer'})
.then((response) => {
let image = btoa(
new Uint8Array(response.data)
.reduce((data, byte) => data + String.fromCharCode(byte), '')
);
return `data:${response.headers['content-type'].toLowerCase()};base64,${image}`;
});
}
我测试过但没用的:
在 src 中执行函数不起作用:(
<div class="row tab-pane Galeria">
<div *ngFor="let product of products" class="col-xl-2 col-lg-3 col-md-4 col-sm-6">
<div class="image-item" (click)="fillModal($event, product)">
<a class="d-block image-block h-100">
<homeImage>
<img *ngIf [src]="ImageInfo(product.id)" class="Images img-fluid" alt="">
</homeImage>
</a>
<div class="ImageText">{{product.name}}</div>
</div>
</div>
</div>
【问题讨论】:
标签: angular typescript