2016-02-19 94 views

回答

23

ngFor只能應用於<template>*ngFor是可應用於任何元素的簡短形式,並且<template>元素是在場景後隱式創建的。

https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html

語法

  • <li *ngFor="let item of items; let i = index">...</li>
  • <li template="ngFor let item of items; let i = index">...</li>
  • <template ngFor let-item [ngForOf]="items" let-i="index"><li>...</li>

這是所有structural directives

Plunker example

更新

隨着2.0.0最終版本相同的模式<ng-container>引入,其行爲類似<template>(實際上沒有加入到包裝元素DOM),但支持*ngFor="..."語法。從官方的角度文檔

+0

NgFor的角度鏈接已經死了 – crh225

+0

我只是在打電話。你可以在http://angular.io中搜索'ngfor'中的API文檔以獲得正確的鏈接 –

+0

@GünterZöchbauer,所以通過指定星號,我基本上說一個角度應該創建一個'template'元素,更正? –

4

報價:

當我們回顧了NgForNgIf內置的指令,我們叫了 語法的怪胎:星號(*)的 指令之前出現名稱。

*是一種語法糖,它使得它更容易閱讀,而 可以通過模板幫助修改HTML佈局。 NgForNgIfNgSwitch全部添加和刪除 包裹在<template>標記中的元素子樹。

欲瞭解更多詳情請https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template

* ngFor具有四個屬性:指數最後甚至。我們可以使用局部變量獲取每次迭代的索引值,最後一個值,奇數值,甚至索引本身的值。這是一個工作示例:

demoArray= [1,2,3,4,5,6,7,8,8,9]; 
<ul> 
    <li *ngFor='#item of demoArray #i=index #l=last #e=even'> 
    Item value is : {{item}} has index value is : {{i}} and last value is :{{l}} even index :{{e}}</li> 
</ul> 
10

當角看到了ngFor星號(*),它將使用DOM元素爲模板來渲染循環。

<div *ngFor="#hero of heroes"> 
    {{ hero.name }} 
</div> 

相當於

<template ngFor #hero [ngForOf]="heroes"> 
    <div> 
     {{ hero.name }} 
    </div> 
</template> 
+0

#不再支持使用let而不是http://www.angulartutorial.net/2016/06/ng-repeat-in-angular-js-2.html – Prashobh

+0

我很喜歡這個回答它是否符合語法 – djeikyb

0

*ngFor *是使用帶有模板標籤的新角度模板語法的簡寫形式,這也稱爲結構性指令。有助於瞭解*只是顯式定義模板上的數據綁定的簡寫標籤。