Angular form mark as dirty

  public markFormDirty(form) {
    this.markGroupDirty(form);
  }

  private markControlDirty(formControl: FormControl, key?) {
    formControl.markAsDirty();
    formControl.updateValueAndValidity();
    if (formControl.invalid) {
      console.log(`invalid key: ${key}`);
    }
  }

  private markGroupDirty(formGroup: FormGroup) {
    Object.keys(formGroup.controls).forEach(key => {
      switch (formGroup.get(key).constructor.name) {
        case 'FormGroup':
          this.markGroupDirty(formGroup.get(key) as FormGroup);
          break;
        case 'FormArray':
          this.markArrayDirty(formGroup.get(key) as FormArray, key);
          break;
        case 'FormControl':
          this.markControlDirty(formGroup.get(key) as FormControl, key);
          break;
      }
    });
  }

  private markArrayDirty(formArray: FormArray, key) {
    formArray.controls.forEach(control => {
      switch (control.constructor.name) {
        case 'FormGroup':
          this.markGroupDirty(control as FormGroup);
          break;
        case 'FormArray':
          this.markArrayDirty(control as FormArray, key);
          break;
        case 'FormControl':
          this.markControlDirty(control as FormControl, key);
          break;
      }
    });
  }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容