2016-06-28 12 views
8

mam ten obiekt json:Angular2 ngFor - pomiń, jeśli wartość nie

data = { 

    "name": "somename", 
    "items": [ 
    { 
     "title": "Item 1", 
     "description": "Some description for item1" 
    }, 
    { 
     "title": "Item 2", 
     "" 
    }, 
    { 
     "title": "Item 3", 
     "description": "Some description for item3" 
    } 
    ] 
} 

Jaki byłby zalecany sposób, z RC2, do * ngFor i wyświetlać tylko te elementy, które mają opis?

HTML Template:

<li *ngFor="let item of data.items" class="item"> 
     <div>{{item.title}}</div> 
     <div>{{item.description}}</div> 
</li> 
+1

można dodać * ngIf do szablonu? Coś jak * ngIf = "item.description". –

+0

Dzięki Adrian. Chciałbym pominąć, lub jako dodatkową opcję do ukrycia, blok LI. –

+0

Możesz użyć rury filtra http://stackoverflow.com/questions/37827925/angular-2-filter-pipe/37828164#37828164 –

Odpowiedz

10

Dodaj *ngIf na elemencie powtarzalnym i sprawdzić z falsy uzależnione od własności length tak:

<ul> 
    <template ngFor let-item [ngForOf]="data.items"> 
     <li class="item" *ngIf="item?.description?.length"> 
      <div>{{item.title}}</div> 
      <div>{{item.description}}</div> 
     </li> 
    </template> 
</ul> 

Nie można uzyskać dostępu do zmiennej item od *ngFor w *ngIf na tym samym elemencie, dlatego należy dodać znacznik template zawierający enkoderulację li.


Praca Plunker na przykład wykorzystanie

+0

Działa jak urok. Dzięki! –

+0

Jak uzyskać indeks iterowanego elementu podczas korzystania z tej składni? Pierwotnie użyłem czegoś takiego: '

  • ...
  • '. – kub1x

    +0

    Powinny pracować z indeksem "let-i =" "'! – rinukkusu

    Powiązane problemy