I am using Angular 2 to create a directive. I have the following host component related events:
host: { '(mouseenter)': 'onMouseEnter($event)', '(mouseleave)': 'onMouseLeave($event)' }
I also created two threads and listeners in the directive for managing two events
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); } }
I want my subscribe to be mouseenter only if the mouseenter event is still active after a fixed delay (i.e. a mouseleave did not happen). I tried to do it this way, but it won’t work (which makes sense, I just don’t know how to fix it).
this._mouseEnterStream.flatMap((e) => { return Observable .of(e) .takeUntil(this._mouseLeaveStream); }).delay(2000).subscribe( () => console.log('yay, it worked!') );
Does anyone with Angular 2 / RxJS experience know how I should approach this?
source share