我有一个输入并且在去抖动(完成输入后半秒)我正在设置一个变量。我希望这个变量改变一些 html。它有效,但只有在我完成输入后,然后输入并重新开始。所以在第二次绕过它就可以了。我希望它在第一次发生。
这是我的html:
<loader *ngIf="searchLoader"></loader>
<input
#searchInput
placeholder="Search pages"
[(ngModel)]="searchQuery"
(keyup)="debounceSearch.next($event.target.value)"
>
和我的 ts:
debounceSearch: Subject<any> = new Subject<any>();
ngOnInit() {
this.debounceSearch
.pipe(debounceTime(500))
.pipe(takeUntil(this.destroy$))
.subscribe(() => {
this.searchLoader = true;
this.searchDocs();
});
}
所以在上面,<loader></loader>
只有在第二次去抖动之后才会出现。这很奇怪,因为我立即将变量设置为 true。
- debounceTime 来自 rxjs 运算符,
import { debounceTime, takeUntil } from "rxjs/operators";
基本上在设定的时间(500 毫秒)之后它将触发.subscribe
函数中的任何内容。
我尝试使用更改检测器 ref 并检测订阅功能中的更改,但它对我不起作用。