Angular 9 从不调用 HammerGestureConfig.buildHammer

BuZ*_*dEE 6 hammer.js angular angular9

更新到 Angular 9 后,无法再使用 Hammer.js。我们对 Angular 进行HammerGestureConfig了如下扩展:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

HammerConfig添加到应用程序模块中。:

  providers: [
    {
      provide: HAMMER_GESTURE_CONFIG,
      useClass: HammerConfig
    }
  ],
Run Code Online (Sandbox Code Playgroud)

据我了解,buildHammer应该调用该方法,但从未调用过。

可能是什么问题呢?

BuZ*_*dEE 9

HammerModule需要被导入到角应用模块。

  imports: [
    ...
    HammerModule
  ],
  providers: [
    {
      provide: HAMMER_GESTURE_CONFIG,
      useClass: HammerConfig
    },
    ...
  ],
  ...
Run Code Online (Sandbox Code Playgroud)

ivy:使 Hammer 支持摇树。以前,在 Ivy 应用程序中,默认情况下包含 Hammer 提供程序。通过此提交,需要 Hammer 支持的应用程序必须HammerModule在其根模块中导入。(#32203)(de8ebbd

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