Rxjs 可观察的.fromEvent(this.handle,';mousedown';);(仅左键单击)
我有以下功能正在工作,如果鼠标向下事件是右键单击,我不想触发Rxjs 可观察的.fromEvent(this.handle,';mousedown';);(仅左键单击),rxjs,Rxjs,我有以下功能正在工作,如果鼠标向下事件是右键单击,我不想触发开关映射 this.zone.runOutsideAngular(() => { let mousedown$ = Observable.fromEvent(this.handle, 'mousedown'); let mousemove$ = Observable.fromEvent(document, 'mousemove'); let mouseup$ = Observable.fromEvent(d
开关映射
this.zone.runOutsideAngular(() => {
let mousedown$ = Observable.fromEvent(this.handle, 'mousedown');
let mousemove$ = Observable.fromEvent(document, 'mousemove');
let mouseup$ = Observable.fromEvent(document, 'mouseup');
let mousedrag$ = mousedown$.switchMap((event: MouseEvent) => {
console.log('mousedown :', event);
if (event.which !== 1) {
// something when wrong
}
let startX = event.clientX;
let startY = event.clientY;
return mousemove$
.map((event: MouseEvent) => {
event.preventDefault();
this.delta = {
x: event.clientX - startX,
y: event.clientY - startY
};
})
.takeUntil(mouseup$);
}).takeUntil(this.destroy$);
});
如何修改let mousedown$=Observable.fromEvent(this.handle,'mousedown')
只接受@ShamPooSham建议的事件,该事件===1
切换图之前的过滤器起到了作用
this.zone.runOutsideAngular(() => {
let mousedown$ = Observable.fromEvent(this.handle, 'mousedown');
let mousemove$ = Observable.fromEvent(document, 'mousemove');
let mouseup$ = Observable.fromEvent(document, 'mouseup');
let mousedrag$ = mousedown$.filter(event => event['which'] === 1).switchMap((event: MouseEvent) => {
console.log('mousedown :', event);
if (event.which !== 1) {
// something when wrong
}
let startX = event.clientX;
let startY = event.clientY;
return mousemove$
.map((event: MouseEvent) => {
event.preventDefault();
this.delta = {
x: event.clientX - startX,
y: event.clientY - startY
};
})
.takeUntil(mouseup$);
}).takeUntil(this.destroy$);
});
在开关映射之前使用过滤器(event=>event.which==1)