【发布时间】:2021-07-02 09:20:23
【问题描述】:
我正在尝试使用fromEvent 组合多个事件blur 和keyup (enter key only)。我已经实现了 blur 事件,我如何也可以组合 keyup.enter。
我已尝试使用 filter 运算符,但使用过滤器,输入正在工作 onblur 不是 -
Component.ts
this.propertyDescription.forEach((input: ElementRef) => {
const events = ['blur', 'keyup'];
from(events)
.pipe(
takeUntil(this.unsubscribe$),
mergeMap((event) =>
fromEvent(input.nativeElement, event)
),
filter((e: KeyboardEvent) => e.key === 'Enter'),
map((evt: any) => evt.target.value),
distinctUntilChanged(
(pre: any, curr: any) =>
JSON.stringify(pre) === JSON.stringify(curr)
)
)
.subscribe((caption: string) => {
console.log(caption);
});
});
【问题讨论】:
-
您的过滤器不起作用,因为您只接受
e.key === 'Enter'的事件。如果你想要它得到keyup,你需要扩展它。我喜欢这里的其他建议。像查看每个事件的if语句一样查看过滤器。