2016-08-19 12 views
2

私はアイテムのリストをループしており、各アイテムは自分のモデルで入力しています。それらのすべては、それが表示されます、私は入力の一つに数を「5」書きます場合は、どうなるのです角度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> 

は、私は、次のコードを持っています。

はRc.5以来、私は

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取り外しと、次のエラーを返します(上記のエラーで説明したように)名前を追加取得するため、それなし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

もっとコードを取得すると便利です。どのようにループするのですか? 'items'はどのように見えますか? –

+0

'ngDefaultControl'を追加する代わりに2つの提案のいずれかを実装するとどうなりますか? –

+0

'items'は、私のAPIのアイテムの配列です。名前、画像などを持つオブジェクトの配列です。そして、' amount'プロパティを、私のangular2クライアントに追加した新しいプロパティです)。以前のAngular 2バージョン – TheUnreal

答えて

0

入力名を宣言すると問題が解決しました。 item.amountを使用したときの値は0で、item.nameに変更しました。

0

この問題が発生しました。私のために修正したのは、各MD入力の名前属性が一意であることを確認することでした。 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>

ない、それを解決するためにきれいな方法は、それはユニークな名前の属性を保証し、問題を修正しました。