添加条件以进行表单验证

Skydev

我正在尝试向表单添加条件。基本上,如果勾选了复选框,我只想将某些字段设置为必填。这是我的代码。

  onCreateContactDetailsForm() {
    this.contactDetailsForm = new FormGroup({
      firstName: new FormControl(null, [Validators.required, Validators.pattern('^[a-zA-Z\- ]*$')]),
      mobileNumber: new FormControl(null, [Validators.required, Validators.pattern('^([0|\+[0-9]{1,5})?([1-9][0-9]{8}|[1-9][0-9]{9})$')]),
      surname: new FormControl(null, [Validators.required, Validators.pattern('^[a-zA-Z\- ]*$')]),
      workEmail: new FormControl(null, [Validators.email]),
      identityValue: new FormControl('', [Validators.required]),
      personalEmail: new FormControl(null, [Validators.email]),
      exitDate: new FormControl('', [Validators.required]),
      exitNoticeDate: new FormControl('', [Validators.required]),
      amount: new FormControl('', [Validators.pattern('^$|^[0-9]*$')]),
      dateOfBirth: new FormControl('', [Validators.required]),
      indebtedToEmployer: new FormControl(false),
      isHrEmailAddress: new FormControl(false),
      if(isHrEmailAddress) {
        address1: new FormControl(null, [Validators.required, Validators.pattern('^[a-zA-Z\- ]*$')]),
        address2: new FormControl(null, [Validators.required, Validators.pattern('^[a-zA-Z\- ]*$')]),
        address3: new FormControl(null, [Validators.required, Validators.pattern('^[a-zA-Z\- ]*$')]),
        postalCode: new FormControl(null, [Validators.required, Validators.pattern('^[a-zA-Z\- ]*$')]),
        postalCountry: new FormControl(null, [Validators.required, Validators.pattern('^[a-zA-Z\- ]*$')]),
      }
    });
  }

if语句似乎不能放在这里,因为它在我的编辑器中给出了此错误 Type '(isHrEmailAddress: any) => void' is missing the following properties from type 'AbstractControl': validator, asyncValidator, _parent, _asyncValidationSubscription, and 44 more.

有没有更简单的方法可以做到这一点?

Chellappan w

Angular FormGroup API具有addControl方法,我们可以使用它来动态添加FormControl。

使用isHrEmailAddress控件的valueChanges方法侦听是否已选中isHrEmailAddress复选框。

component.ts

constructor() {
    this.onCreateContactDetailsForm();
     this.addControls(this.isHrEmailAddressControl.value);
    this.isHrEmailAddressControl.valueChanges.subscribe(isHrEmailAddress => {
      this.addControls(isHrEmailAddress);
    });
  }

  addControls(isHrEmailAddress) {
    const controls = {
      address1: new FormControl(null, [
        Validators.required,
        Validators.pattern("^[a-zA-Z- ]*$")
      ]),
      address2: new FormControl(null, [
        Validators.required,
        Validators.pattern("^[a-zA-Z- ]*$")
      ]),
      address3: new FormControl(null, [
        Validators.required,
        Validators.pattern("^[a-zA-Z- ]*$")
      ]),
      postalCode: new FormControl(null, [
        Validators.required,
        Validators.pattern("^[a-zA-Z- ]*$")
      ]),
      postalCountry: new FormControl(null, [
        Validators.required,
        Validators.pattern("^[a-zA-Z- ]*$")
      ])
    };
    if (isHrEmailAddress) {
      Object.keys(controls).forEach(key => {
        this.contactDetailsForm.addControl(key, controls[key]);
      });
    } else {
      Object.keys(controls).forEach(key => {
        this.contactDetailsForm.removeControl(key);
      });
    }
  }

component.html

<form [formGroup]="contactDetailsForm">
    <input type="text" formControlName="firstName">
    <hr>
    <input type="checkbox" formControlName="isHrEmailAddress">
    <hr>
    <div *ngIf="isHrEmailAddressControl.value">
        <input type="text" formControlName="address1">
  </div>
</form>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Yup进行条件表单验证

来自分类Dev

使用jquery.validate.js插件进行条件表单验证

来自分类Dev

Flask:在多个表单字段上进行条件验证

来自分类Dev

添加动态元素时进行AngularJS表单验证

来自分类Dev

条件Django表单验证

来自分类Dev

添加与表单无关的验证

来自分类Dev

表单验证AngularJs的条件样式

来自分类Dev

表单字段验证条件

来自分类Dev

使用angularjs进行表单验证

来自分类Dev

使用jQuery进行表单验证

来自分类Dev

使用php进行表单验证

来自分类Dev

用Javascript进行表单验证

来自分类Dev

在Spring中进行表单验证

来自分类Dev

通过Ajax进行表单验证

来自分类Dev

使用 Javascript 进行表单验证

来自分类Dev

如何基于symfony2中基于用户提交的数据进行条件表单验证?

来自分类Dev

Angular2-在有条件创建的输入字段上进行表单验证

来自分类Dev

动态表单验证-在满足所有条件之前进行

来自分类Dev

Django-如何向表单字段添加验证器(而不是对其进行设置)

来自分类Dev

添加或条件进行查询

来自分类Dev

使用BootstrapValidator进行条件验证

来自分类Dev

使用BootstrapValidation进行条件验证

来自分类Dev

使用if条件进行Rails验证

来自分类Dev

cakephp 3添加条件验证

来自分类Dev

cakephp 3添加条件验证

来自分类Dev

满足条件时使用欧芹验证表单

来自分类Dev

如何处理嵌套表单的条件验证?

来自分类Dev

条件Angular JS子表单验证

来自分类Dev

有多个提交按钮的条件表单验证