如果填充一个字段,则需要删除角形数组

时间:2019-06-11 09:55:35

标签: angular typescript

我正在努力进行表单数组所需的验证,如果必须填写给定字段之一,则必须从表单数组中删除验证。

这是我的代码

.ts

    this.form = fb.group({
    contract: this.fb.array([], this.AtLeastOneFieldValidator)
    )};
  ifContractEmpty() {
    const eArray = this.contractArray.value;
    const length = this.contractArray.length;
    if (length > 1) {
      if (
        eArray[length - 1].salesOrderNumber == null &&
        eArray[length - 1].customerPOnumber == null &&
        eArray[length - 1].contractNumber == null
      ) {
        return true;
      } else {
        return false;
      }
    }
  }

  AtLeastOneFieldValidator(group: FormGroup): { [key: string]: any } {
    let isAtLeastOne = false;
    if (group && group.controls) {
      for (const control in group.controls) {
        if (
          group.controls.hasOwnProperty(control) &&
          group.controls[control].valid &&
          group.controls[control].value
        ) {
          isAtLeastOne = true;
          break;
        }
      }
    }
    return isAtLeastOne ? null : { required: true };
  }

 addContactGroup() {
    return this.fb.group({
      salesOrderNumber: "",
      customerPOnumber: "",
      contractNumber: ""
    });
  }

  addContract() {
    this.contractArray.push(this.addContactGroup());
  }
 get contractArray() {
    return <FormArray>this.rForm.get("contract");
  }

我在html上设置了required属性,但是如果不确定是否应该这样做。我唯一的选择是从这三个中选出一个,如果其中一个被填充,则其他两个则不需要。

我尝试使用自定义验证程序,如您从上方看到的那样,但这无济于事

0 个答案:

没有答案