У меня есть вход и на дебат (полсекунды после окончания ввода) я устанавливаю переменную.Я хочу, чтобы эта переменная изменила некоторые 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
function.
Я пытался использовать ref детектора изменений и обнаруживать изменения в функции подписки, но у меня это не сработало.
Есть идеи?Спасибо!