2016-11-22 28 views
0

如何使用ngModel對ngFormat重複的多個表單進行輸入?Angular2不能使用ngModel重複的格式ngFor

Angular2給我錯誤,當我試圖這樣做。有問題的代碼

Error: Permission denied to access property "rejection"

實例塊:

<div *ngFor="let item of items"> 
    <form name="itemForm"> 
     {{item.name}}<input [(ngModel)]="item.name"> 
    </form> 
</div> 

這裏是plunker https://plnkr.co/edit/YNZiCBeyqJoxO5ox5nlC?p=preview

如果我刪除了形式的標籤,不會有問題的都跑,但我需要它,所以我可以在所有輸入上使用回車鍵以自己的形式更新相應的數據。

+0

我不能與Plunker https://plnkr.co/edit/Bx0zT8F0wENJ2NMZqRAy?p=preview重現你的錯誤。雖然'name'屬性丟失了。 –

+0

現在很奇怪,第二次打開它時,重擊者不會拋出錯誤。我的實際代碼仍然給了我錯誤,儘管它已經解決了。謝謝。 – Skyvory

+0

糟糕,這是你的plunkr通過向輸入標籤添加name屬性以某種方式工作。 – Skyvory

回答

2

如果在表單標籤內使用ngModel,則必須設置name屬性或必須在ngModelOptions中將窗體控件定義爲「獨立」。

下面將工作沒有任何錯誤:

<div *ngFor="let item of items"> 
    <form name="itemForm"> 
    {{item.name}}<input [(ngModel)]="item.name" [ngModelOptions]="{standalone: true}"> 
    </form> 
</div> 
+2

添加'name'屬性以形成'input'字段會更有意義,而不是說它是'standalone' –

+0

我傾向於設置'input'字段的'name'屬性 –

+0

來自Angular文檔(https: //angular.io/guide/forms):「將[(ngModel)]與表單結合使用時,定義名稱屬性是一項要求。」 – elshev

0

正如@指出ranakrunal9你可以爲你的輸入使用唯一的名稱屬性。下面的代碼:

<div *ngFor="let item of items; let index=index"> 
    <form name="itemForm"> 
     {{item.name}}<input [(ngModel)]="item.name" name={{index}}> 
    </form> 
</div>