2016-12-07 30 views
16

我在使用HammerJS和Angular2時遇到問題。 我有一個傳送帶(基於帶Angular2事件處理程序的引導傳送帶),我正在聽向左滑動向右滑動事件。 滑動本身很完美。 問題是,由於我使用HammerJS,我無法向上/向下滾動旋轉木馬組件,因爲它是一個完整的視口大小的項目,這是一個巨大的問題。垂直滾動不與HammerJS和Angular2一起使用

這個問題怎麼解決?

平臺:
Angular2 2.1.2
三星Galaxy S2採用Android 5.1.1 谷歌
Google Chrome Android版:54.0.2840.85

+0

例如,這也不能在移動設備當試圖向上或向下滾動,從而y工作我們的手指起點在圖像上: [plunker](https://plnkr.co/edit/LCsiXOtzSedGZDbGQ3f8?p=preview) – user1511408

+0

Plz添加Chrome版本。谷歌每月推出一個新版本「最新的穩定手機」並不值得。你在54歲還是55歲?因爲我剛剛發現55有一個新的指針事件api,打破了很多hammerjs的東西。 – REJH

+0

這是54.0.2840.85 – user1511408

回答

21

明白了!

在你的AppModule:

import { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'; 

export class MyHammerConfig extends HammerGestureConfig { 
    overrides = <any> { 
     'pinch': { enable: false }, 
     'rotate': { enable: false } 
    } 
} 

@NgModule({ 
    declarations: [ 
     // ... 
    ], 
    imports: [ 
     // ... 
    ], 
    providers: [ 
     // ... 
     { 
      provide: HAMMER_GESTURE_CONFIG, 
      useClass: MyHammerConfig 
     } 
    ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule {} 

現在垂直滾動的作品,禁用pinchrotate後。 到目前爲止找不到任何其他方式。我不確定pinchrotate事件會發生什麼(我的意思是他們會被禁用,我認爲)。但即使沒有這個配置,附加(pinch)="onPinch($event)" - 無論如何都沒有做任何事情。

在我的項目角度版本:2.4.1

上測試:

  • Chrome瀏覽器的Windows(於表面的,那麼真實的觸摸屏 - 不只是模擬)V 55.0.2883.87米( 64位)
  • Android版Chrome - v 55.0.2883.91
+0

嗨, 謝謝你的解決方案。我認爲它是在55以下的Chrome版本上工作的。 它適用於模擬器,但我的手機現在在Chrome 55上。 您碰巧知道我們如何讓hammerj在Chrome 55上工作? – user1511408

+0

On Surface(so,Windows)我有Chrome 55.0.2883.87 m(64位)。但是,也許這是Android或iOS上的不同故事?讓我在修理手機後再檢查(我試圖在我的三星上放置一個自定義ROM並破壞它 - 需要一段時間,直到我弄清楚並修復它),然後再發表一條評論。 – MrCroft

+0

@ user1511408 - 剛剛在Chrome for Android上進行測試(v 55.0.2883.91)。它工作得很好。 – MrCroft