Angular - formControlName

时间:2018-03-23 10:38:41

标签: angular angular-material

我的组件中有这个表单(FormGroup):

public form: FormGroup; 
this.form = this.formBuilder.group({ 
 address: this.formBuilder.group({       
    country: ['', [Validators.minLength(2)]]
  })
});  

,该组件的模板如下所示:

<form [formGroup]="form" (ngSubmit)="onSubmit()">
    <div formGroupName="address">
        <mat-form-field style="width:95%">
            <mat-select placeholder="Country" formControlName="country" (selectionChange)="countryOfAddressChanged(country)">
                <mat-option *ngFor="let countryType of countryTypes" [value]="countryType">
                    {{countryType | translate}}
                </mat-option>
            </mat-select>
        </mat-form-field>
    </div>
</form>

如果我选择国家/地区 - 国家/地区仍然未定义 - 那么 formControlName =“country”不能作为的属性 - 因此countryOfAddressChanged(国家/地区)的调用没有工作,因为国家是不确定的。 我需要做些什么才能让它发挥作用。

1 个答案:

答案 0 :(得分:1)

countryOfAddressChanged(country)

country未在任何地方定义,因此它将为undefined。如果您想获取表单控件country的值,可以通过从form.get('country').value

等表单组访问它来获取它
<mat-select placeholder="Country" formControlName="country" (selectionChange)="countryOfAddressChanged(form.get('country').value)">
    <mat-option *ngFor="let countryType of countryTypes" [value]="countryType">
        {countryType | translate}}
     </mat-option>
</mat-select>