Angular Reactive Form, valueChanges 遇到 "maximum call stack size"

Angular Reactive Form, valueChanges runs into "maximum call stack size"

我正在尝试在表单发生更改后立即根据索引更改我的 formarray 值。 给出以下情况: 我给了每个阶段一个开始和结束日期。除第一阶段外,一个阶段的开始日期应始终与上一阶段的结束日期相同。

我认为错误的发生是因为 valueChanges 总是在方法结束时更改表单的值时调用自身。

  onChanges() {
this.projectForm.controls['phases'].valueChanges.subscribe(value => {
  for (var i = 1; i <= this.phasecount; i++) {
      this.projectPhases.at(i).patchValue({ pStart: value[i - 1].pEnd });                   
  }
})

}

你们知道如何解决错误(可能是终止条件)吗?

提前致谢。

这一行 this.projectPhases.at(i).patchValue({ pStart: value[i - 1].pEnd }); 触发了这个事件 this.projectForm.controls['phases'].valueChanges 并无限循环。

您可以在执行 patchValue 时将 emitEvent 选项设置为 false :

this.projectPhases.at(i)
.patchValue({ pStart: value[i - 1].pEnd }, { emitEvent: false });