我想在上次更改延迟后触发onChange

时间:2019-07-20 08:44:34

标签: angular input timer delay

基本上,我有一个角度应用程序,并且我想让(更改)仅在几秒钟什么都没有发生之后才触发。因此,不是在每次在输入字段中写入字母时才发送请求,而是仅在写入字母后几秒钟什么都没发生,才发送请求。

2 个答案:

答案 0 :(得分:2)

您可以使用rxjs debounceTime,该管道通过https://stackblitz.com/edit/angular-debounce-form-control的示例中的valueChanges观察到反应式FormControl

逻辑是使用FormControl获取对您输入的引用,并订阅valueChanges方法,并通过管道debounceTime来触发回调方法(仅当未在特定间隔内触发)

this.searchControl.valueChanges
.pipe(
    debounceTime(2000),
    distinctUntilChanged()
)
.subscribe(res => {
    //your API call
});

这里distinctUntilChanged()仅在发出其他值时使订阅回调执行。

答案 1 :(得分:1)

https://stackblitz.com/edit/angular-rwrinz-sxjtfj

navigationItem.rightBarButtonItem = UIBarButtonItem(image: searchImage, style: .plain, target: self, action: #selector(filterItemTapped(button:)))

别忘了退订...