【问题标题】:Angular 6 - Form.valueChanges doesn't update form.touched property (Template driven Form)Angular 6 - Form.valueChanges 不会更新 form.touched 属性(模板驱动的表单)
【发布时间】:2020-05-14 05:22:54
【问题描述】:
  trackFormChanges() {

    this.form.valueChanges.pipe(
      debounceTime(300),
      distinctUntilChanged())
      .subscribe(data => {
      setTimeout(() => {
        if (this.form.dirty && this.form.touched) {   //dirty works but touched property has old value  
          this.prompt = true;
        }
        if (this.recordCopy) {
          if (_.isEqual(this.record, this.recordCopy)) {
            this.isSaved = true;
          } else {
            this.successes = [];
            this.isSaved = false;
          }
        }
      }, 500);
    });
  }

我正在尝试检查在触发 valueChanges 时表单是否被触摸,form.dirty 有效,但 form.touched 为假且不更新我不想订阅 form.statuschanges,以及更多高估更改多次触发。有什么办法可以处理吗?

【问题讨论】:

    标签: rxjs angular6


    【解决方案1】:

    这是 FormGroup 的实现,如果你触摸一个控件,它不会触及父 FormGroups - 只有控件会被触摸。

    更多的form.statuschanges 也不会对触摸做出反应,它只会在相关的 FormGroup / FormControl 变为有效/无效时发出。

    在您的情况下,您需要重新考虑使用 form.touched 避免它或添加一个额外的逻辑来触摸父 FromGroups,但子控件没有指向其父级的指针。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2019-01-20
      • 2016-04-26
      相关资源
      最近更新 更多