Вы можете использовать комбинацию операторов fromEvent
, map
, debounceTime
и distinctUntilChanged
.
import { of, fromEvent } from 'rxjs';
import { map, debounceTime, distinctUntilChanged } from 'rxjs/operators';
let codeTextBox = document.getElementById('codetextbox');
let sourceStream$ = fromEvent(codeTextBox, 'input')
.pipe(
map((x: any) => x.target.value),
debounceTime(300),
distinctUntilChanged()
);
cont mysubscription = sourceStream$.subscribe(x=>{
console.log(x) //<-- this is the latest text in the textbox
});
//mysubscription.unsubscribe(); <-- add this line when your view is getting destroyed
Кроме того, позаботьтесь о том, чтобы subscribe
несколько раз.В идеале subscribe
должно произойти только один раз, когда текстовое поле доступно в DOM.И НЕ забывайте unsubscribe
, иначе у вас будет утечка памяти.