首页 > 解决方案 > Angular 8如何跳过不可见文本框的验证

问题描述

<form [formGroup]="userForm"  >
   <div class="form-group" *ngIf="isHidden">
    <label for="firstName">First Name</label>
    <input class="form-control" name="firstName" id="firstName" type="text" formControlName="firstName">
  </div>
  <button type="submit" class="btn btn-default" [disabled]="!userForm.valid">Submit</button>
</form>
import { Component } from '@angular/core';
import { FormControl, FormGroup, FormBuilder, Validators } from '@angular/forms';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  isHidden:boolean=false;
  title = 'Children';
  userForm: FormGroup;
  user: any = {
    firstName: ''

  };
  constructor(private formBuilder: FormBuilder) {

    this.userForm = this.formBuilder.group({
      'firstName': [this.user.firstName, [Validators.required]]
    });
  }

}

我正在实现反应式表单角度验证如果我隐藏文本框,那么如何跳过对表单中不可见的特定文本框的验证

如果我的文本框可见我的验证应该工作

表示如果 isHidden=true 验证不应该工作 如果 ishidden =false 验证应该工作

标签: angular

解决方案


您可以创建一个函数来添加/删除验证器:

 checkValidator() {
    const firstNameControl = this.userForm.controls["firstName"];

    if (this.isHidden) {
      firstNameControl.clearValidators();
    } else {
      firstNameControl.setValidators([Validators.required]);
    }
    firstNameControl.updateValueAndValidity();
  }

工作演示


推荐阅读