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 }