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

角反应形式:使用。具有formGroupName的控件属性

  •  0
  • bzmills  · 技术社区  · 8 年前

    我很好奇是否可以使用 myForm.controls 属性,而不是为每个实例定义抽象控件?

    NG书籍中建议使用此方法,但它不用于嵌套表单和FormGroupName。

    这是我的密码。

    HTML:

    <form [formGroup]="myForm"
        (ngSubmit)="onSubmit(myForm.value)">
    <div>
      <input type="text"
             id="nameInput"
             placeholder="Product"
             [formControl]="myForm.controls['name']">
       <div *ngIf="myForm.controls['name'].hasError('required')">Name is 
       required</div>
    </div>
    <div formGroupName="address">
      <input type="text"
             id="streetInput"
             placeholder="Enter Street"
             [formControl]="myForm.controls['street']">
       <div *ngIf="myForm.controls['street'].hasError('required')">Street is required</div>
    </div>
    <button type="submit" class="ui button">Submit</button>
    

    JS:

    export class App {
      myForm: FormGroup;
    
      constructor(fb: FormBuilder) {
        this.myForm = fb.group({
          'name':  ['', Validators.required],
          'address': fb.group({
            'street': ['', Validators.required],
          });
        } 
      }
    }
    

    我意识到我可以 formControlName="street" 但是我认为我必须使用AbstractControl来确定它的验证状态。在我的非嵌套formGroup中,我可以只使用 myForm.controls['name'].hasError('required') .

    1 回复  |  直到 8 年前
        1
  •  0
  •   Jong-Hyen Kim    8 年前

    我不知道,我很理解你的问题。

    是否要从控件中获取有关嵌套的验证?

    然后,你可以 myForm.get('address').control['street'].hasError('required') myForm.get('address').get('street').hasError('required')

    你可以改变 hasError('required') errors.required .

    这些链接是关于表单验证的描述。

    https://angular.io/api/forms/FormGroup#example-4

    https://angular.io/guide/form-validation#reactive-form-validation

    如果我误解了你的问题,请评论。

    推荐文章