Для таких случаев лучше использовать debounceTime
из rxJs
.Даже имеет гораздо лучшую поддержку с угловым.Посмотрите ниже с примером -
import { Component } from '@angular/core';
import { of, timer, Subject } from 'rxjs';
import { debounce, debounceTime } from 'rxjs/operators';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
model: string;
modelChanged: Subject<string> = new Subject<string>();
constructor() {
this.modelChanged.pipe(
debounceTime(500))
.subscribe(model => {
console.log(model);
});
}
changed(text: string) {
this.modelChanged.next(text);
}
}
<input [ngModel]='model' (ngModelChange)='changed($event)' />
Рабочий пример