如何解决Angular 的 FormControl 导致无限循环
我有以下逻辑:
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 次,有时只触发一次。
我试图理解为什么emitEvent 属性在这里不起作用。
解决方法
尝试在 patchValue() 选项参数中将 onlySelf 设置为 true。
onChangeRow($event) {
form.controls["value"].patchValue($event.data.value,{ onlySelf: true,emitEvent: false });
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。