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 });
我正在尝试在表单发生更改后立即根据索引更改我的 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 });