我有两个角度组件,一个父组件和一个子组件,都有自己的表单字段。 我在两个组件中设置了更改监听器来监听表单控件值的更改,并在输入某些表单控件时禁用某些字段。
当尝试从组件 1 中的更改侦听器禁用组件 2 内的表单控件时,表单控件不会立即禁用,而是在键入第二个字符后禁用。
经过一些研究,我发现在我的更改侦听器订阅中使用distinctUntilChanged() 是原因。从订阅中删除 uniqueUntilChanged() 解决了主要问题,但是,现在它导致以下控制台错误:ERORR:RangeError:超出最大调用堆栈大小。
changeListener(){
this.myForm.get('sample_control_name').valueChanges.subscribe(v => {
if(isNotEmpty(v)) {
this.childComponent.getFormGroup().get('sample_control_name_1').disable();
}
else {
this.childComponent.getFormGroup().get('sample_control_name_1').enable();
}
})
}