Как я могу использовать rx js debounceTime
и distinctUntilChanged
с angular событиями ввода (input)
или (click)
Я не могу использовать fromEvent
, потому что мне также нужно передать параметр (Пример ниже)
<li *ngFor="let item of items>
<input [(ngModel)]="item.name" (input)="inputChanged(item.id)">
</li>
Итак, я пошел с Subject
(Пример ниже)
<input type="text" placeholder="Type something..." (input)="inputFn($event, 'myParam')" #myInput>
@ViewChild("myInput", { static: true }) myInput;
private inputEvent = new Subject<any>();
ngOnInit() {
this.inputEvent
.pipe(
// map((obj: any) => obj.evt.target.value),
debounceTime(1000),
distinctUntilChanged()
)
.subscribe(res => {
console.log("res", res.evt.target.value);
});
}
inputFn(evt, param) {
this.inputEvent.next({evt, param});
}
В приведенном выше примере не используется distinctUntilChanged()
. Если я отфильтрую по карте map((obj: any) => obj.evt.target.value)
и посмотрю на изменение значения (отличное), я получу только входное значение, а не параметр.
Мое требование - я хочу подождать, пока пользователь закончит ввод текста, а также, если пользователь при повторном вводе хотите проверить, не совпадает ли значение с предыдущим, а также хотите получить параметр.