Gecikmesinden sonra fare olayının hala etkin olup olmadığını kontrol etmek için Angular 2 kullanıyorum. Aşağıdaki olaylar konak bileşenine bağlı adres: Ben de iki etkinlikAçısal 2 RxJS
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);
}
}
istediğim yönetmek için direktif iki dere ve dinleyici oluşturulan
host: {
'(mouseenter)': 'onMouseEnter($event)',
'(mouseleave)': 'onMouseLeave($event)'
}
benim yalnızca çağrılabilir subscribe
için mouseenter
olayı, sabit bir gecikmeden sonra aktiftir (yani, mouseleave
oluşmamış). Bu şekilde yapmaya çalıştım, ama işe yaramıyor (mantıklı olanı, sadece nasıl tamir edeceğimi bilmiyorum).
this._mouseEnterStream.flatMap((e) => {
return Observable
.of(e)
.takeUntil(this._mouseLeaveStream);
}).delay(2000).subscribe(
() => console.log('yay, it worked!')
);
Angular 2/RxJS deneyimine sahip olan herkes bunu nasıl ele almam gerektiğini biliyor mu?
'geliyor this._mouseStream' kapsamaz:
Aksi Angular2 github bir öneri Rx kullanarak DOM olaylarını obsersables eklemek için basitçe yol var? GünterZöchbauer @ –
Maalesef bu size Rx kullandığınız beri, gerçekten EventEmitters gerekmez btw mouseEnterStream – Harangue
olmalıdır. Bunun yerine sadece Konuları kullanın. EventEmitters'ı Gözlemlenebilir olarak kullanabileceğiniz şaşıracaksınız, belki ng2 onları başlığın altına çevirir. – kakigoori