Sign in

Sign up

Angular Bootstrap mobile touch gestures

MDB provides you support for most common touch gestures.

Pan gesture
Rotate gesture
Press gesture
Tap gesture
Swipe gesture
Pinch gesture

Basic example: Carousel with gestures support

Click on the button below to launch a live example and see the Carousel with a gestures support in action.

Live preview

To make it work, use the code below together with one of MDB carousels .

Note: Remember to set a corresponding #uniqueName in both Carousel and script.

<mdb-carousel #carousel>
    [ Slides ]

import { Component, ViewChild, HostListener } from '@angular/core';

  selector: 'app-root',
  templateUrl: 'app.component.html'

export class AppComponent {  
    @ViewChild('carousel') public el: any;

    @HostListener('swipeleft', ['$event']) public swipePrev(event: any) {

    @HostListener('swiperight', ['$event']) public swipeNext(event: any) {


By default it adds a set of tap, doubletap, press, horizontal pan and swipe, and the multi-touch pinch and rotate recognizers.

In app.modules.ts, add you own Hammer.js global config:

import { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
declare var Hammer: any;

export class MyHammerConfig extends HammerGestureConfig {
  overrides = <any> {
    'pan': { direction: Hammer.DIRECTION_All },
    'swipe': { direction: Hammer.DIRECTION_VERTICAL },

  buildHammer(element: HTMLElement) {
    const mc = new Hammer(element, {
      touchAction: 'auto',
          inputClass: Hammer.SUPPORT_POINTER_EVENTS ? Hammer.PointerEventInput : Hammer.TouchInput,
          recognizers: [
            [Hammer.Swipe, {
              direction: Hammer.DIRECTION_HORIZONTAL
    return mc;

    providers: [
            provide: HAMMER_GESTURE_CONFIG,
            useClass: MyHammerConfig

Also the viewport meta tag is recommended, it gives more control back to the webpage by disabling the doubletap/pinch zoom. More recent browsers which support the touch-action property don’t require this.

<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">

Enabling vertical or all directions for the pan and swipe recognizers, add in overrides:

overrides = <any> {
    'pan': {direction: Hammer.DIRECTION_All },
    'swipe': {direction: Hammer.DIRECTION_VERTICAL }