Angular 2 RxJS prüft, ob das Mausereignis nach einer Verzögerung noch aktiv ist
Ich benutze Angular 2, um eine Direktive zu erstellen. Ich habe die folgenden Ereignisse an die Host-Komponente gebunden:
host: {
'(mouseenter)': 'onMouseEnter($event)',
'(mouseleave)': 'onMouseLeave($event)'
}
ch habe auch zwei Streams und Listener für die Direktive erstellt, um die beiden Ereignisse zu verwalte
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);
}
}
Ich will meinsubscribe
soll nur aufgerufen werden, wenn dasmouseenter
as @ -Ereignis ist nach einer festen Verzögerung immer noch aktiv (d. h. einmouseleave
ist nicht aufgetreten). Ich habe versucht, es auf diese Weise zu tun, aber es funktioniert nicht (was Sinn macht, ich weiß nur nicht, wie ich es beheben soll).
this._mouseEnterStream.flatMap((e) => {
return Observable
.of(e)
.takeUntil(this._mouseLeaveStream);
}).delay(2000).subscribe(
() => console.log('yay, it worked!')
);
Weiß jemand mit Angular 2 / RxJS-Erfahrung, wie ich das angehen soll?