LoginSignup
8
8

More than 5 years have passed since last update.

Ionic 4でGestureを実装する方法(Angular)

Last updated at Posted at 2019-02-05

Ionic 4では、First Meaningful Paintの向上を目指しており、デフォルトでできるだけ不要なライブラリは読み込まないようになっています。 (tap)(press)(swipe) などのジェスチャーイベントを実装することができる hammer.js も例外ではなく、もし必要な場合は自分で追加実装することが必要になりました。

追加で実装してみます。

まずはnpmでインストールします。

npm i hammerjs --save

そして、Angularプロジェクト全体で読み込むために、 src/main.ts に、一行追加します。

src/main.ts
+ import 'hammerjs';

これで使えるようになるのですが、hammerjsはデフォルトでは設定している要素のイベントを阻害します。例えば「pressを設定してる要素の上でスワイプがきかなくなる」など、そういうことです。なので、それを可能にするために、Angularでイベントの設定をします。

src/app/app.module.ts に以下を追記します。

src/app/app.module.ts
+ import { BrowserModule, HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';

+ @Injectable()
+ export class IonicGestureConfig extends HammerGestureConfig {
+   buildHammer(element: HTMLElement) {
+     const mc = new (<any>window).Hammer(element);
+     for (const eventName of Object.keys(this.overrides)) {
+       mc.get(eventName).set(this.overrides[eventName]);
+     }
+     return mc;
+   }
+ }

@NgModule({
.
.
.
  providers: [
+     { provide: HAMMER_GESTURE_CONFIG, useClass: IonicGestureConfig },
  ]

これで、v3同様に様々なGestureが使えるようになりました。

それでは、また。

8
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8