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)