Angular2:如何在嵌套的formBuilder表单上访问formControl值

问题描述 投票:6回答:1

如何在不使用this.resFormGroup.patientName.lastname.value的情况下获得[ngModel]的值?

name="resForm"标签中[formGroup]="resFormGroup"#resNgForm="ngForm"<form>的目的是什么?

我需要模板参考变量#resNgForm,因为我有[formGroup]="resFormGroup"

这是我的组成部分:

// FormBuilder
this.resFormGroup = this.formBuilder.group({
  patientName: this.formBuilder.group({
    firstname: ['', Validators.required],
    lastname: ['', Validators.required]
  }),
  address: this.formBuilder.group({
    street: [],
    zip: [],
    city: []
  })
});

这是我的模板:

<form name="resForm" [formGroup]="resFormGroup" (ngSubmit)="onSubmit()" #resNgForm="ngForm">
  <fieldset formGroupName="patientName">
      <legend>Name</legend>
  <label>Firstname:</label>
  <input type="text" formControlName="firstname" [(ngModel)]="myFirstName">

  <label>Lastname:</label>
  <input type="text" ***formControlName="lastname"***>
  </fieldset>

  <fieldset formGroupName="address">
      <legend>Address</legend>
      <label>Street:</label>
      <input type="text" formControlName="street">

      <label>Zip:</label>
      <input type="text" formControlName="zip">

      <label>City:</label>
      <input type="text" formControlName="city">
  </fieldset>

  <button type="submit" class="btn btn-primary" [disabled]="!resNgForm.valid">Submit</button>

我的提交按钮:

 onSubmit() { 
   console.log("Submit button pressed [ngModel: " + this.myFirstName + "]    [Form: " + this.resFormGroup.controls["patientName"].dirty + "]"); 
 }

有了[ngModel],我可以得到第一个名字;我也可以访问dirtyformGrouppatientName属性。

angular formbuilder
1个回答
7
投票

基于这个关于dynamic form的教程,他们使用了一种非常简单的方法来显示整个表单的值而没有[ngModel]。

如何获取formBuilder表单值?答案是'this.myForm.value'。

示例代码

例如:

onSubmit(model: ResCrud) {  
    console.log("Nested Control: " + JSON.stringify(this.resFormGroup.value));
}

它在Web控制台中的外观

angular formbuilder nested value example

© www.soinside.com 2019 - 2024. All rights reserved.