Я использую 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
все еще активно после фиксированной задержки (т. Е. 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
? - person Günter Zöchbauer   schedule 10.02.2016fromEvent
для создания наблюдаемого из генератора событий. Раньше я активно использовал эмиттеры событий, но холодные/горячие потоки, операторы и все создание/подписка/удаление слишком хороши. (вы можете найти сообщение Андре здесь полезным: программирование rxjs против eventemitter в узле js"> stackoverflow.com/questions/25338930/) - person kakigoori   schedule 10.02.2016