代码之家  ›  专栏  ›  技术社区  ›  quma

角度-formControlName

  •  0
  • quma  · 技术社区  · 6 年前

    我的组件中有此表单(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=“国家” 不作为的属性工作 -因此,CountryOfAddress的调用发生了变化(country) 不起作用,因为国家未定义。 为了让它工作,我必须做什么。

    1 回复  |  直到 6 年前
        1
  •  1
  •   cyberpirate92    6 年前
    countryOfAddressChanged(country)
    

    country 没有在任何地方定义,因此 undefined 。如果要获取窗体控件的值 ,您可以从formgroup访问它,如 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>