问题描述
我有以下逻辑:
1.component.ts
onChangeRow($event) {
form.controls["value"].patchValue($event.data.value,{ emitEvent: false }); //
}
2.component.ts
@Output() changeRow: EventEmitter<any> = new EventEmitter<any>();
this.formGroup.valueChanges.subscribe(data => {
this.changeRow.emit({selfRef: this.selfRef,form: this.formGroup,config: this.config})
})
看起来第一个组件中的 patchValue
方法触发了一个循环,因为它的新值被 valueChanges
捕获并且循环继续直到我得到一个 Maximum call stack size exceeded
错误。有时它只触发 3 次,有时只触发一次。
解决方法
尝试在 patchValue() 选项参数中将 onlySelf 设置为 true。
onChangeRow($event) {
form.controls["value"].patchValue($event.data.value,{ onlySelf: true,emitEvent: false });
}