首页 > 解决方案 > TS/JS 用 for 循环中断迭代函数

问题描述

如果满足条件,我遇到了中断迭代循环并返回 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。我想要做的是,如果一个表单控件不为空,我想返回 false 并打破 for 循环和迭代函数。谢谢你。

标签: javascripttypescriptloopsiterationangular-reactive-forms

解决方案


我认为,最好使用required验证器而不是迭代您的控件。

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

见:https ://angular.io/api/forms/FormControl


推荐阅读