我有一个简单的搜索组件,其中包含一个带有 2 个元素的反应式表单:
- 文本输入(搜索任意匹配的文本)
- 复选框(包括/排除已删除的结果)
到目前为止,我myFormGroup.valueChanges.subscribe(...)
用来执行我的搜索方法。
现在的问题是,我想消除文本输入的抖动。同时不去抖动复选框,因此单击复选框时搜索方法会立即执行。
使用valueChanges.debounceTime(500)
当然会消除整个表单的抖动。那不是我想要的。
这是一个精简的例子。真实的形式有更多的输入。有些应该去抖动,有些不应该。
有什么简单的方法可以完成这项工作吗?还是我必须分别订阅每个表单控件?
很高兴看到你是如何解决这个问题的。
提前致谢。
编辑:代码
export class SearchComponent {
myFormGroup: FormGroup;
constructor(fb: FormBuilder) {
this.myFormGroup = fb.group({
textInput: '',
checkbox: false
});
}
ngOnInit() {
this.myFormGroup.valueChanges.subscribe(val => {
// debounce only the textInput,
// and then execute search
});
}
}