升级到 angular 7,rxjs6 时如何修复“类型 'WheelEvent' 上不存在属性 'wheelDelta'”?

Kee*_*amy 5 rxjs6 angular7

我正在使用 rxjs6 升级到 angular7:在mouseWheelEvent我得到的类型中"Property 'wheelDelta' does not exist on type 'WheelEvent'"

我们有其他选择wheelDelta吗?

mouseWheelFunc(event: MouseWheelEvent): void {

    //  var event = window.event || event; // old IE support

    let delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail)));

    if ( delta > 0) {
      this.mouseWheelUp.emit(event);
    } else if ( delta < 0) {
      this.mouseWheelDown.emit(event);
    }

    // for IE
    event.returnValue = false;
    // for Chrome and Firefox
    if ( event.preventDefault) {
      event.preventDefault();
    }
  }
Run Code Online (Sandbox Code Playgroud)

src/modules/components/numeric-stepper/mousewheel.directive.ts(23,49) 中的错误:错误 TS2339:“WheelEvent”类型上不存在属性“wheelDelta”。

小智 7

似乎 WheelEvent 不再像它所说的那样具有此属性。现在他们添加了 deltaY 和 deltaX。

现在您必须访问event.deltaY而不是event.wheelData.

但是 deltaY 的值与 wheelData 的值相反。这意味着当事件上的 wheelData 为正(向上滚动)时,deltaY 将为负数,反之亦然。

例子:

改变这个:

        zoomScroll(event: WheelEvent) {
            if (event.wheelDelta > 0) {
                this.zoomIn();
            } else if (event.wheelDelta < 0) {
                this.zoomOut();
            }
        }
Run Code Online (Sandbox Code Playgroud)

为了这:

       zoomScroll(event: WheelEvent) {
           if (event.deltaY < 0) {
               this.zoomIn();
           } else if (event.deltaY > 0) {
               this.zoomOut();
           }
    }
Run Code Online (Sandbox Code Playgroud)

来源:https : //github.com/Microsoft/TypeScript/issues/9071