2016-02-05 103 views
17

我必須創建一個複選框列表動態,所以我用* ngFor迭代對象數組一切正常工作,直到迭代。當我在標籤標籤中設置for屬性的值時,問題就出現了。角有拋出錯誤:無法綁定到'for',因爲它不是已知的本地屬性angular2

不能結合「爲」,因爲它不是一個已知的原生屬性angular2

新的錯誤消息

未處理的承諾拒絕:模板解析錯誤:無法綁定到'for',因爲它不是'label'的已知屬性。

<div *ngFor="#batch of batch_array"> 
    <label for="{{batch.id}}"><input type="checkbox" [value]="batch.id" id="{{batch.id}}"  
     (click)="batchSelectedEevent(batch.id)" /> {{batch.batch_name}} 
    </label> 
</div> 

這裏是我的plnkr示值誤差:http://plnkr.co/edit/aAQfWvHc7h7IBuYzpItO?p=preview

什麼是錯在我的代碼?

回答

21

更新

在Angular2最終[for]="xxx"應該正常工作。他們添加了從forhtmlFor的別名。

角默認使用屬性綁定,但label不具有財產for。告訴角度明確使用屬性綁定,使用代替:

[attr.for]="someField" 

attr.for="{{someField}}" 

代替。

這些還工作,因爲htmlFor是屬性for被體現。

[htmlFor]="someField" 
htmlFor="{{someField}}" 

在Angular2 RC.6加入一個別名等等這些現在應該工作以及:

[for]="someField" 

for="{{someField}}" 
+0

哇它工作很好,謝謝!我可以知道爲什麼要在'attr.for'中使用'attr'而不是簡單地'for'? –

+1

對於'attr.for',你必須明確地選擇屬性綁定,因爲屬性綁定是昂貴的。屬性反映在DOM中,並且需要進行更改以檢查是否註冊了與此屬性集相匹配的CSS選擇器。屬性綁定只是JS而且便宜,因此是默認值。 –

+1

「屬性綁定僅JS」。我不會那麼說。有一些屬性沒有相應的屬性 - 例如大量使用的textContent屬性 - 所以綁定到這些屬性也會導致DOM被更新。 –

相關問題