Angular 2选择标记,formControlName不起作用。
pmsList的数据如下:[{id:1,pms:'test'},.......]
但是在构造函数中我设置了:
this.pms.setValue({id:1,pms:"test"})
然后它不反映html页面上的值。
这是我的HTML代码:
<select formControlName="pms" class="form-control down-arrow">
<option value="">Select</option>
<option *ngFor="let item of pmsList">{{item.pms}}</option>
</select>
答案 0 :(得分:0)
有什么不对吗?
您从this.pms
开始,然后在pms
更新setValue
。
应该是这样的(告诉您的表单组称为myFormGroup
):
this.myFormGroup.setValue({id:1,pms:"test"})
答案 1 :(得分:0)
确保您正在完成所有这些:
import { FormBuilder, FormGroup } from '@angular/forms';
public form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = fb.group({
pms: 'test'
});
}
<form [formGroup]="form">
<select formControlName="pms" class="form-control down-arrow">
<option value="">Select</option>
<option *ngFor="let item of pmsList">{{item.pms}}</option>
</select>
</form>
答案 2 :(得分:0)
试试这个:
使用表单名称更改myForm
this.myForm.get('pms').patchValue({id:1,pms:"test"});
答案 3 :(得分:0)
最近使用Angular 7和材质我遇到了相同的问题,对我来说,解决方案是将字符串强制返回到FormGroup
createCategoryForm(): FormGroup
{
return this._formBuilder.group({
id: [this.cat.id],
name: [this.cat.name],
type: [this.cat.type],
parent_id: ["" + this.cat.parent_id]
});
}
然后,为了测试,我修复了ID为1和2的2个选项
<div fxLayout="row" fxLayoutAlign="start start">
<mat-form-field appearance="outline" fxFlex>
<mat-label>Parent</mat-label>
<mat-select name="parent_id" formControlName="parent_id">
<mat-option value="1">1</mat-option>
<mat-option value="2">2</mat-option>
</mat-select>
</mat-form-field>
</div>