如果有效,我的反应性角形表单应在“向上键”上提交。
我在valueChanges
上注册了一个订户,但是每个输入的名称分别为onKeyUp和onBlur,并且表单提交了两次。看来这是一个已知问题(https://github.com/angular/angular/issues/12540),建议使用解决方案distinctUntilChanged
。
不幸的是,对于我来说似乎不起作用。无论我设置什么时间,提交人都会立即被解雇,而且仍然被解雇两次。
this.myFormGroup.valueChanges
.pipe(debounceTime(2000), distinctUntilChanged())
.subscribe(() => {
if (this.myFormGroup.valid) {
this.submitForm();
}
});
有人知道distinctUntilChanged
是我的错误吗?还是有另一种方法可以防止在valueChanges
上触发onKeyUp和onBlur?
答案 0 :(得分:0)
distinctUntilChanged默认使用===
比较,对象引用必须匹配,myFormGroup
将在每次更改时发出一个对象,并且这些对象不是相同的 reference
尝试添加自定义方法来处理更改
distinctUntilChanged((p: any, n: any) => JSON.stringify(p) === JSON.stringify(n))