TS / JS在for循环内部破坏了迭代功能

时间:2018-09-06 09:06:30

标签: javascript typescript loops iteration angular-reactive-forms

我遇到了中断迭代循环并在满足条件时返回false的问题。

我实际上想做的是检查反应形式是否为空:

 public isEmpty(form: AbstractControl): boolean {
    if (form instanceof FormGroup) {
      for (const key of Object.keys(form.controls)) {
        if (key !== 'modalite') {
          const control = form.get(key);
          if (control instanceof FormGroup) {
            this.isEmpty2(control);
          } else {
            if (control.value && control.value !== '') {
              return false;
            }
          }
        }
      }
    } else {
      if (form.value && form.value !== '') {
        return false;
      }
    }

    return true;
  }

问题是我的return false打破了for循环,但此后一直保持迭代,因此我总是返回true。我想做的是,如果一个formcontrol不为空,我想返回false并中断for循环和迭代功能。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为,最好使用必需验证程序,而不是遍历控件。

const control = new FormControl('', Validators.required);
console.log(control.value);      // ''
console.log(control.status);     // 'INVALID'

请参阅:https://angular.io/api/forms/FormControl