Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

232
Visualizações
Angular 9 nunca llama a HammerGestureConfig.buildHammer

Después de la actualización a Angular 9, ya no funciona para usar Hammer.js. Hemos ampliado Angular HammerGestureConfig de la siguiente manera:

 import {HammerGestureConfig} from '@angular/platform-browser'; import {Injectable} from '@angular/core'; @Injectable({providedIn: 'root'}) export class HammerConfig extends HammerGestureConfig { overrides = <any>{ 'pan': { direction: Hammer.DIRECTION_ALL, threshold: 5 } // override default settings }; buildHammer(element) { const recognizers = []; if (element.hasAttribute('data-hammer-pan')) { recognizers.push([Hammer.Pan]); } if (element.hasAttribute('data-hammer-pan-x')) { recognizers.push([Hammer.Pan, {direction: Hammer.DIRECTION_HORIZONTAL}]); } if (element.hasAttribute('data-hammer-tap')) { recognizers.push([Hammer.Tap]); } if (element.hasAttribute('data-hammer-pinch')) { recognizers.push([Hammer.Pinch]); } if (element.hasAttribute('data-hammer-rotate')) { recognizers.push([Hammer.Rotate]); } if (element.hasAttribute('data-hammer-press')) { recognizers.push([Hammer.Press]); } if (element.hasAttribute('data-hammer-swipe')) { recognizers.push([Hammer.Swipe]); } const hammer = new Hammer.Manager(element, { recognizers: recognizers, touchAction: 'auto' }); return hammer; } }

El HammerConfig se agrega al módulo de la aplicación.:

 providers: [ { provide: HAMMER_GESTURE_CONFIG, useClass: HammerConfig } ],

Según tengo entendido, se debe llamar al método buildHammer , pero nunca se llama.

¿Cual podría ser el problema?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

El HammerModule debe importarse al módulo de la aplicación Angular.

 imports: [ ... HammerModule ], providers: [ { provide: HAMMER_GESTURE_CONFIG, useClass: HammerConfig }, ... ], ...

hiedra: haz que el árbol de soporte de Hammer se pueda sacudir. Anteriormente, en las aplicaciones Ivy, los proveedores de Hammer se incluían de forma predeterminada. Con este compromiso, las aplicaciones que desean compatibilidad con Hammer deben importar HammerModule en su módulo raíz. ( #32203 ) ( de8ebbd )

https://github.com/angular/angular/blob/9.0.0/CHANGELOG.md

over 4 years ago · Santiago Trujillo Relatório

0

Comente cualquier importación de hammerjs que probablemente esté en su archivo main.ts que probablemente se haya agregado en Angular 8 o antes; para mí, originalmente fue un proyecto de Angular 4 de 2 años que hemos evolucionado. Pero Angular 9 no puede usarlo allí.

Muévalos todos a app.module.ts en este orden...

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

Si lo está utilizando para deslizar, como para un carrusel, deberá exportar una clase personalizada...

 @Injectable() 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 } }

Luego en NgModule

 @NgModule({ // ... imports: [ HammerModule, // ...

no te olvides de los proveedores...

 providers: [ {provide: HAMMER_GESTURE_CONFIG, useClass: MyHammerConfig} // ... ]

Deberia de funcionar.

over 4 years ago · Santiago Trujillo Relatório

0

Después de actualizar a Angular 9, tuve que volver a instalar npm- hammerjs ya que se había eliminado de mi package.json . Comprobaría que el tuyo sigue ahí.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda