我做了一些研究,我很惊讶地发现它并不像应该的那样直截了当。
我知道有一些使用ngModel的方法。像Bind and fetch dropdown list value in typescript and Angular2和其他人一样。但我希望能够轻松地将我选择的选项绑定到我的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>
.TS
fatherForm: FormGroup;
this.fatherForm = this.formBuilder.group({
pref: ['AA']
});
this.prefs=[
{name: "AA"},
{name: "BB"}
];
默认值有效。但是当我选择BB时,仍然会选择默认值。 当默认值为&#39;&#39;
时也会出现同样的情况Harry-ninh在Bind Select List with FormBuilder Angular 2
中提出了这种方法我做错了什么?
注意:当然,表格中还有其他输入,为了简单起见,忽略它们。
修改
我尝试在此plunkr中使用完全相同的示例,但它也不起作用。 http://plnkr.co/edit/Rf9QSSEuCepsqpFc3isB?p=preview 发送表单后,它会显示尚未触及的值。
答案 0 :(得分:5)
您好我可以按照以下方式进行操作
<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>
和
name:string;
fatherForm : FormGroup;
prefs=[
{name: "AA"},
{name: "BB"}
];
constructor(fb:FormBuilder) {
this.fatherForm = fb.group({
pref : [this.prefs.name]
});
}
我也创造了工作plunkr。
希望这会对你有所帮助