Angular 2选择标记,formControlName不起作用

时间:2018-01-18 14:35:50

标签: javascript angular angular2-forms

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>

4 个答案:

答案 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>