2016-06-28 58 views
8

我有這樣的JSON對象:Angular2 ngFor - 跳過如果沒有價值

data = { 

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

什麼是推薦的方式,與RC2,爲* ngFor,並僅顯示有說明的項目?

HTML模板:

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

你可以添加一個* ngIf的模板?像* ngIf =「item.description」。 –

+0

謝謝阿德里安。我想跳過,或作爲第二選項來隱藏li塊。 –

+0

您可以使用過濾器管道http://stackoverflow.com/questions/37827925/angular-2-filter-pipe/37828164#37828164 –

回答

10

重複元素上的​​length屬性添加一個*ngIf,並檢查了falsy條件,像這樣:

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

不能從訪問item變量*ngFor*ngIf上的相同元素,這就是爲什麼你需要添加一個template標籤封裝li


工作Plunker例如使用

+0

工程就像一個魅力。謝謝! –

+0

如何在使用此語法時獲取迭代項目的索引?最初我使用過這樣的東西:'

  • ...
  • '。 – kub1x

    +0

    應該使用'let -i =「index」'! – rinukkusu