2016-09-16 11 views
1

はここFormBuilderです:angular2フォーム、選択した項目

let valuesArray = fb.array([ 
     fb.group({ name: 'one' }), 
     fb.group({ name: 'two' }), 
     fb.group({ name: 'three' }), 
     fb.group({ name: 'four' }) 
    ]); 

this.form = fb.group({ 
    values: valuesArray, 
    selectedValue: valuesArray[0] 
}) 

テンプレート:

<select formControlName="selectedValue"> 
    <option *ngFor="let controlGroup of form.controls.values.controls"> 
    {{ controlGroup.controls.name.value }} 
    </option> 
</select> 

これはformControlName<select>から要素を削除することで固定されているエラーcontrol.registerOnChange is not a functionがスローされますが、どのように他あなたはリスト内の選択された項目を追跡しますか?

+0

form.controls.values.controls'はかなり有線に見える 'の繰り返し処理を行います。 –

+0

答えはKara in https://github.com/angular/angular/issues/11669 –

答えて

1

私は、これはあなたが望む何をすべきだと思う:

<div>{{selectedItem | json}}</div> 
<select formControlName="mySelect" [(ngModel)]="selectedItem"> 
    <option *ngFor="let item of items" [(ngValue)]="item"> 
this.form = fb.group({ 
    mySelect: [] 
}) 

items = [ 
    { name: 'one' }, 
    { name: 'two' }, 
    { name: 'three' }, 
    { name: 'four' }]; 

selectedItem; 
// or 
selectedItem = items[0]; 
+0

これはテンプレート駆動型です...私はテンプレート駆動型を使用したくありません。しかし、ありがとう。 – RoninCoder

+0

それから、 '[(ngModel)]の代わりに' this.form.valueChanges ... 'にサブスクライブしてください –

+0

もちろん、反応性のあるフォームでバナナボックスを使用したくないです。むしろアプリケーション全体を通してどちらか一方を使用したいと思います。 – RoninCoder

関連する問題