Как скрыть неиспользуемые предметы с помощью ngFor ionic? - PullRequest
2 голосов
/ 10 марта 2019

я пытаюсь скрыть неиспользуемые элементы от ngFor, проблема в том, что я успешно скрыл это, но его место все еще существует и пусто, как на изображении ниже:

enter image description here

Мой файл TS:

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
  }

мой поставщик данных:

@Injectable()
export class SharedDataProvider {

  public couponz;

this.config.Woocommerce.getAsync("coupons/").then((data) => {
  this.couponz = JSON.parse(data.body);
});

мой 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 Ответ

1 голос
/ 10 марта 2019

Два варианта:

Измените шаблон на следующее:

<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>

Или сохранить отфильтрованные элементы списка в другом элементе экземпляра компонента:

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>
...