问题
im trying to hide unused items from ngFor, the problem is, i did hide it successfully but its place still exists and empty like the image below:
My ts file:
coupon: any;
couponz() {
var data=[];
for (let co of this.shared.couponz){
data.push({ code: co.code, coEmail: co.email_restrictions[0], expiry: co.date_expires });
this.coupon = data;
console.log(this.coupon)
}return data
}
my data provider:
@Injectable()
export class SharedDataProvider {
public couponz;
this.config.Woocommerce.getAsync("coupons/").then((data) => {
this.couponz = JSON.parse(data.body);
});
my html:
<ion-list padding>
<ion-item *ngFor="let c of coupon; trackBy: trackElement">
<div *ngIf="c.coEmail == shared.customerData.email">
{{c.expiry}}
{{c.code}}
</div>
</ion-item>
</ion-list>
回答1:
Two options:
Refactor the template into the following:
<ion-list padding>
<ng-container *ngFor="let c of coupon; trackBy: trackElement">
<ion-item *ngIf="c.coEmail == shared.customerData.email">
<div >
{{c.expiry}}
{{c.code}}
</div>
</ion-item>
</ng-container>
</ion-list>
Or store the filtered elements of the list in another instance member of the component:
this.filteredCoupons = this.coupons.filter(c => c.coEmail == this.shared.customerData.email)
<ion-list padding>
<ion-item *ngFor="let c of filteredCoupons; trackBy: trackElement">
<div>
{{c.expiry}}
{{c.code}}
</div>
</ion-item>
</ion-list>
来源:https://stackoverflow.com/questions/55091192/how-to-hide-unused-items-with-ngfor-ionic