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

Bbi*_*bit 1 input timer delay angular

基本上,我有一个角度应用程序,我希望只有在几秒钟没有发生任何事情后才会触发(更改)。因此,不是每次在输入字段中写一封信时都发送请求,只有在写完一封信并且几秒钟没有发生任何事情后,才会发送请求。

Sak*_*ham 5

您可以像https://stackblitz.com/edit/angular-debounce-form-control中的示例一样使用rxjs debounceTime管道连接到valueChanges反应器的observableFormControl

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

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

这里distinctUntilChanged()使订阅回调仅在发出不同的值时执行。

  • 更改了答案以包含“distinctUntilChanged()”,这使得订阅回调仅在发出不同值时才执行。 (2认同)