angular2表格,在<;选择>;要素

angular2表格,在<;选择>;要素,angular,typescript,Angular,Typescript,以下是FormBuilder: 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, se

以下是
FormBuilder

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>

{{controlGroup.controls.name.value}

这会引发错误
control.registerChange不是一个函数
,它可以通过从
元素中删除
formControlName
来修复,但是您如何跟踪列表中的选定项呢?

我认为这应该满足您的要求:

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

迭代
form.controls.values.controls
看起来很自然。Kara以模板驱动的形式回答。。。我不想使用模板驱动的表单。谢谢。然后订阅
this.form.valueChanges…
而不是
[(ngModel)]
当然可以,但不要将香蕉盒与反应式表单一起使用。我宁愿在整个应用程序中使用其中一个。你的意思是
[(ngValue)]
。我认为没有办法解决这个问题<代码>不是窗体控件,只有
是。
this.form = fb.group({
    mySelect: []
})

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

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