作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的案例,其中从输入字段检测到输入。当输入值发生变化时,经过短暂的反跳时间后,将调用一个服务,该服务会进行 http 调用并返回一些数据。
但是,服务调用 api 的次数在 16 到 30 次之间,而不是只触发一次或两次——即使输入只有 4 个字符,因此应该触发 4 次。
我怀疑这可能与回调有关,或者我错误地实现了 valueChanges 方法。无论如何,我附上了一些代码以供审查,并希望收到任何反馈,因为我是 Angular 的新手,看不到实现中的任何错误。
inputChange(input) {
this.inputFormControl.valueChanges
.debounceTime(5000)
.distinctUntilChanged()
.switchMap(input => this.userService.search(input))
.subscribe(data => {
this.data = data;
},
);
}
最佳答案
当值发生变化(假设)并且您也订阅valueChanges
时,您正在调用方法inputChange(input)
。删除 inputChange
方法,只使用 valueChanges
:
constructor() {
this.inputFormControl.valueChanges
.debounceTime(5000)
.distinctUntilChanged()
.switchMap(input => this.userService.search(input))
.subscribe(data => {
this.data = data;
});
}
还记得在组件销毁时取消订阅!
关于Angular2 InputFormControl 和 ValueChange 连续触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47519001/
我有一个简单的案例,其中从输入字段检测到输入。当输入值发生变化时,经过短暂的反跳时间后,将调用一个服务,该服务会进行 http 调用并返回一些数据。 但是,服务调用 api 的次数在 16 到 30
我是一名优秀的程序员,十分优秀!