【发布时间】:2020-06-07 19:52:38
【问题描述】:
如何将 rxjs debounceTime 和 distinctUntilChanged 与角度输入事件 (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 map((obj: any) => obj.evt.target.value) 过滤并寻找值变化(不同),我将只获得输入值而不是参数。
我的要求是 - 我想等到用户完成输入文本,并且如果用户重新输入想检查值是否与以前不同并且还想获取参数。
【问题讨论】: