如何使用formBuilder绑定angular2中的选择下拉列表?

Joa*_*Gil 3 typescript angular2-formbuilder angular

我做了一些研究,我很惊讶地发现它并不像应该的那样直截了当.

我知道有一些使用ngModel的方法.就像在typecriptAngular2等中绑定和获取下拉列表值一样.但我希望能够轻松地将我选择的选项绑定到我的formControlName var.

这是我尝试过的:

.HTML

 <form id="myForm" name="father" [formGroup]="fatherForm" (ngSubmit)="createFather()">
     <div class="row">
         <select formControlName="pref" id="f">
              <option value=null disabled selected>Prefijo</option>
              <option *ngFor="let item of prefs" [ngValue]="hola">{{item.name}}</option>
          </select>

      </div>
 </form>
Run Code Online (Sandbox Code Playgroud)

.TS

fatherForm: FormGroup;  

this.fatherForm = this.formBuilder.group({
          pref: ['AA']
});

 this.prefs=[
     {name: "AA"},
     {name: "BB"}
  ];
Run Code Online (Sandbox Code Playgroud)

默认值有效.但是当我选择BB时,仍然会选择默认值.当默认值为''时会发生同样的情况

这种方法由Harry-ninh在FormBuilder Angular 2的Bind Select List中提出

我究竟做错了什么?

注意:当然,表单中还有其他输入,为简单起见,忽略它们.

编辑

我尝试在这个plunkr中使用完全相同的例子,它也不起作用. http://plnkr.co/edit/Rf9QSSEuCepsqpFc3isB?p=preview 发送表单后,表明尚未触及该值.

调试信息

The*_*tor 6

嗨,我请按照以下方式做

<form id="myForm" name="father" [formGroup]="fatherForm">
   <div class="row">
     <select formControlName="pref" id="f">
          <option value=null disabled selected>Prefijo</option>
          <option *ngFor="let item of prefs" [value]="item.name">{{item.name}}</option>
      </select>

  </div>
   <button type="submit">Submit</button>
</form>
<p>Value: {{ fatherForm.value | json }}</p>
Run Code Online (Sandbox Code Playgroud)

name:string;
fatherForm : FormGroup;
prefs=[
 {name: "AA"},
 {name: "BB"}
];
constructor(fb:FormBuilder) {
  this.fatherForm = fb.group({
    pref : [this.prefs.name]  
 });
}
Run Code Online (Sandbox Code Playgroud)

我也创造了工作的plunkr.

希望对你有帮助