Angular 6-Form.valueChanges不会更新form.touched属性(模板驱动的窗体)

问题描述 投票:0回答:1
  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个回答
0
投票

这是FormGroup的实现,如果您触摸控件,它不会触摸父FormGroups-仅会触摸该控件。

甚至还有form.statuschanges也不会在触摸时作出反应,仅在相关的FormGroup / FormControl变为有效/无效时才发光。

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

© www.soinside.com 2019 - 2024. All rights reserved.