我正在使用 Angular 2 来制定指令。我将以下事件绑定到主机组件:
host: {
'(mouseenter)': 'onMouseEnter($event)',
'(mouseleave)': 'onMouseLeave($event)'
}
我还在指令上创建了两个流和侦听器来管理这两个事件
export class PopupDirective {
private _mouseEnterStream: EventEmitter<any> = new EventEmitter();
private _mouseLeaveStream: EventEmitter<any> = new EventEmitter();
onMouseEnter($event) {
this._mouseEnterStream.emit($event);
}
onMouseLeave($event) {
this._mouseLeaveStream.emit($event);
}
}
我希望subscribe
仅在mouseenter
事件在固定延迟后仍处于活动状态(即 amouseleave
尚未发生)时才被调用。我试过这样做,但它不起作用(这是有道理的,我只是不知道如何解决它)。
this._mouseEnterStream.flatMap((e) => {
return Observable
.of(e)
.takeUntil(this._mouseLeaveStream);
}).delay(2000).subscribe(
() => console.log('yay, it worked!')
);
有 Angular 2 / RxJS 经验的人知道我应该如何解决这个问题吗?