Angular 仅针对用户输入去抖动
Angular debounce only for user input
我在 Angular2 中设置了反应式表单。在一个组件中,我订阅了一个表单控件的值更改,去抖动时间为 500 毫秒,例如:
myForm.get("myField").valueChanges.debounceTime(500).subscribe(...);
如果值是由代码而不是用户更改的,是否有办法跳过去抖动时间?或者有没有办法拆分这 2 个事件?
在您以编程方式设置值的地方,您可以使用 emitEvent:false
,在 docs 中说明...
If emitEvent
is true
, this change will cause a valueChanges
event on the FormControl to be emitted. This defaults to true
.
因此将其设置为 false
不会导致 valueChanges
触发,因此如果您在某个时候设置该值,则可以执行以下操作:
this.myForm.get('myField').patchValue('my value', {emitEvent:false})
我在 Angular2 中设置了反应式表单。在一个组件中,我订阅了一个表单控件的值更改,去抖动时间为 500 毫秒,例如:
myForm.get("myField").valueChanges.debounceTime(500).subscribe(...);
如果值是由代码而不是用户更改的,是否有办法跳过去抖动时间?或者有没有办法拆分这 2 个事件?
在您以编程方式设置值的地方,您可以使用 emitEvent:false
,在 docs 中说明...
If
emitEvent
istrue
, this change will cause avalueChanges
event on the FormControl to be emitted. This defaults totrue
.
因此将其设置为 false
不会导致 valueChanges
触发,因此如果您在某个时候设置该值,则可以执行以下操作:
this.myForm.get('myField').patchValue('my value', {emitEvent:false})