2016-08-19 63 views
2

我正在循環顯示項目列表,每個項目都有自己的模型輸入。Angular 2 ngDefaultControl

我有以下代碼:

<div *ngFor="let item of items; let i=index"> 
    <md-input placeholder="Quantity" value="0" min="0" step="1" type="number" 
     [(ngModel)]="items[i].amount" #amount 
        (ngModelChange)="calculateSubtotal($event)" 
        ngDefaultControl 
        > 
     </md-input> 
</div> 

會發生什麼,如果我將在一個輸入寫數字「5」,所有的人都會表現出來。

由於Rc.5,我不得不把ngDefaultControl,因爲沒有它,我得到

EXCEPTION: If ngModel is used within a form tag, either the name attribute must be set or the form 
    control must be defined as 'standalone' in ngModelOptions. 

    Example 1: <input [(ngModel)]="person.firstName" name="first"> 
    Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}"> 

卸下ngDefaultControl並添加名稱(如上面的錯誤描述)返回以下錯誤:

EXCEPTION: No value accessor for form control with unspecified name 

我用了一個名稱輸入看起來像:

<md-input placeholder="Quantity" value="0" min="0" step="1" type="number" 
      [(ngModel)]="items[i].amount" [name]="items[i].amount" #amount 
         (ngModelChange)="calculateSubtotal($event)" 
         > 
      </md-input> 

我試圖添加[ngModelOptions]="{standalone: true}表達式,但它也沒有工作。

也試圖name="coolName"檢查它是否是我的表達,並且錯誤仍然存​​在!

任何幫助?

+0

這將有助於獲得更多的代碼。你如何循環。 「項目」是怎麼樣的? –

+0

如果你實現了2個建議中的一個,而不是添加'ngDefaultControl',會發生什麼? –

+0

'items'是我的API中的一個項目的數組,它是一個包含名稱,圖像等的對象數組。我添加了'amount'屬性是我添加到我的angular2客戶端上的一個新屬性(如我的代碼中所述)。它在以前的Angular 2版本中工作正常 – TheUnreal

回答

0

對輸入名稱進行了分解。當我使用item.amount該值爲0,將其更改爲item.name使其工作正常....

0

我遇到了同樣的問題。爲我確定的是確保每個md輸入的name屬性都是唯一的。它與ngDefaultControl無關。

基本上我有以下代碼:

<div *ngFor="let item of items; let i=index"> <md-input [(ngModel)]="items[i].amount" name="amount"></md-input> </div>

的ngModel在我的控制器擁有所有正確的數據,但認爲僅僅從每一行中重複的最後一行顯示的數據。我改變了我的模板,以下內容:

<div *ngFor="let item of items; let i=index"> <md-input [(ngModel)]="items[i].amount" name="{{'amount' + i}}"></md-input> </div>

也許不是解決這個問題的最漂亮的方式,但它保證了唯一的名稱屬性,並解決了問題。