Publicado el 19.06.2021 a las 16:12
A continuación te explicaré como detectar los gestos tactiles con Angular.
Usaremos la librería de Hammer JS
Instalar la librería en nuestro proyecto de Angular, para ello:
npm i hammerjs
Si quieres obtener más información acerca del paquete puedes visitar su sitio oficial aquí
Importar en el fichero main.ts la librería:
import 'hammerjs'
En el fichero app.module.ts importar HammerModule, HAMMER_GESTURE_CONFIG y HammerGestureConfig, para ello añadir en el app.module.ts:
import { BrowserModule, HammerModule, HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser';
En los imports del app.module.ts, importar el HammerModule
imports: [ ..., HammerModule ]
En los providers añadir el objeto provide:HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, quedarían los providers:
providers: [ ..., { provide:HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig } ],
En el componente que queramos detectar el gesto táctil añadir el evento asociado al gesto, algunos eventos que puedes capturar son:
Puedes ver todos los eventos a capturar aquí. 👈
Un ejemplo en un componente imagen en Angular quedaría:
<img class="img" [src]="r.img" loading="lazy" width="100" alt="Imagen del residente" (swipeleft)="swipe($event.type, indexResident)" (swiperight)="swipe($event.type, indexResident)" cdkDragLockAxis="x" cdkDragBoundary=".residente" cdkDrag />
Hay gestos que no están activados por defecto, por ejemplo el swipeto y el swipedown.
import { Injectable } from '@angular/core'; import * as Hammer from 'hammerjs'; @Injectable() export class HammerConfig extends HammerGestureConfig { overrides = <any>{ swipe: { direction: Hammer.DIRECTION_ALL } }; }
providers: [{provide:HAMMER_GESTURE_CONFIG, useClass: HammerConfig}]
Cualquier duda dímela, te contasteré tan rápido como me sea posible.
Hasta luego 🖖