美文网首页
Angular form mark as dirty

Angular form mark as dirty

作者: 云上笔记 | 来源:发表于2022-03-30 17:19 被阅读0次
  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;
      }
    });
  }

相关文章

网友评论

      本文标题:Angular form mark as dirty

      本文链接:https://www.haomeiwen.com/subject/kjlwjrtx.html