私は、ディメンションを作成するために角2を使用しています。私は、次のイベントは、ホストコンポーネントにバインドされています:私はまた、2つのイベント角2遅れてマウスイベントがまだアクティブであるかどうかを確認します。
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);
}
}
私が欲しいを管理するためのディレクティブ上の2つのストリームとリスナーを作成し
host: {
'(mouseenter)': 'onMouseEnter($event)',
'(mouseleave)': 'onMouseLeave($event)'
}
私の場合にのみ呼び出されsubscribe
にmouseenter
イベントは一定の遅延の後でもまだアクティブです(つまり、mouseleave
が発生していません)。私はこのようにしてみましたが、うまくいきません(それは意味があります、私はそれを修正する方法が分かりません)。
this._mouseEnterStream.flatMap((e) => {
return Observable
.of(e)
.takeUntil(this._mouseLeaveStream);
}).delay(2000).subscribe(
() => console.log('yay, it worked!')
);
Angular 2/RxJSの経験がある方は、私がこれにどのようにアプローチすべきか知っていますか?
'から来this._mouseStream'ん:
そうでない場合Angular2のgithubの中の提案は、Rxの使用DOMイベントにアタッチするobsersablesに単純な方法がありますか? –
@GünterZöchbauerあなたはRxを使っているので、mouseEnterStream – Harangue
btwは申し訳ありません。実際はEventEmittersは必要ありません。 Subjectを代わりに使用してください。あなたはObservablesとしてEventEmittersを使うことができます。多分、ng2はそれらをフードの下で変換します。 – kakigoori