如何对在“keyUp”事件上调用的函数进行反跳操作?

这是我的代码:

我的功能

private handleSearch(searchTextValue: string, skip?: number): void {
    this.searchTextValue = searchTextValue;
    if (this.skip === 0 || typeof skip === "undefined") {
        this.skip = 0;
        this.pageIndex = 1;
    } else {
        this.skip = skip;
    }
    this.searchTextChanged.emit({ searchTextValue: searchTextValue, skip: this.skip, take: this.itemsPerPage });
}

我的HTML
<input type="text" class="form-control" placeholder="{{ 'searchquery' | translate }}" id="searchText" #searchText (keyup)="handleSearch(searchText.value)">

一般来说,我要实现的是在用户停止键入后不久调用handleSearch

我发现我可以为此使用lodash的_debounce(),但是我还没有找到如何将其放在keyUp事件中。

最佳答案

更新:
使用RXJS 6管道运算符:

this.subject.pipe(
  debounceTime(500)
).subscribe(searchTextValue => {
  this.handleSearch(searchTextValue);
});

您可以创建一个rxjs / Subject并在keyup上调用.next()并使用所需的debounceTime进行订阅。

我不确定这是否是正确的方法,但是可以。
private subject: Subject<string> = new Subject();

ngOnInit() {
  this.subject.debounceTime(500).subscribe(searchTextValue => {
    this.handleSearch(searchTextValue);
  });
}

onKeyUp(searchTextValue: string){
  this.subject.next(searchTextValue);
}

HTML:
<input (keyup)="onKeyUp(searchText.value)">

关于angular - Angular 2-取消keyUp事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42761163/

10-12 06:44