I can't recognize swipes in my Angular app using Hammer.JS. It's setup like this:
"@angular/core": "~9.0.0-next.6",
"hammerjs": "^2.0.8",
"zone.js": "~0.10.2"
app.module.ts is looking like this:
import { BrowserModule, HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
import * as hammer from 'hammerjs';
export class MyHammerConfig extends HammerGestureConfig {
overrides = <any>{
swipe: { direction: hammer.DIRECTION_HORIZONTAL },
pinch: { enable: false },
rotate: { enable: false }
};
}
@NgModule({
imports: [
BrowserModule,
],
providers: [
{
provide: HAMMER_GESTURE_CONFIG,
useClass: MyHammerConfig
}
],
})
app.component.ts has this method:
onSwipe() {
console.log('swipe');
}
And finaly app.component.html looks like this:
<div (swipeleft)="onSwipe()" (swiperight)="onSwipe()">
<h1>Swipe here</h1>
</div>
However, neither swipeleft
or swiperight
are triggered ever using an iPad or iPhone both running iOS 13.
Am I missing any crucial configuration? Or do I have another issue with this code?
I also tested this Stackblitz "blog-ng-swiping" which is working fine on the touch devices, but it's using Angular 8.
The most important thing is to import the HammerModule in app module file. In your angular project, install the hammerjs package locally by running the below command. Now, you will need to import the hammerjs module in your main. ts file.
Since HammerJS is no longer needed when updating to v9, the dependency on HammerJS can be removed if it's not used directly in your application. In some cases, projects use HammerJS events in templates while relying on Angular Material modules to set up the HammerJS event plugin.
“Hammer is an open-source library that can recognize gestures made by touch, mouse, and pointer events.” – hammerjs.github.io. It is a popular JavaScript library that can be used to build web applications that require performing actions like panning, swiping, rotating, and zooming on touch gestures.
The most important thing is to import the HammerModule in app module file. In your angular project, install the hammerjs package locally by running the below command. Now, you will need to import the hammerjs module in your main.ts file.
The approach is to install the hammerjs package locally, import it in main.ts and set the Hammer gesture configuration by extending the HammerGestureConfig class. Then you can bind to specific events like swipe, pan, pinch, press, etc. The most important thing is to import the HammerModule in app module file.
A set of supported event names for gestures to be used in Angular. Angular supports all built-in recognizers, as listed in HammerJS documentation. Maps gesture event names to a set of configuration options that specify overrides to the default values for specific properties.
Then you can bind to specific events like swipe, pan, pinch, press, etc. The most important thing is to import the HammerModule in app module file. In your angular project, install the hammerjs package locally by running the below command.
It turns out that Angular 9 has a new HammerModule
which is used for everything Hammer.JS related and also for tree shaking during compilation.
So besides the whole configuratonion of Hammer.JS, gestures etc. you need to include this Module in your app as well to make Hammer.JS work with Angular 9:
import { HammerModule } from '@angular/platform-browser';
@NgModule({
imports: [
HammerModule
]
)}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With