从 Angular-Material 项目中删除 HammerJS

Gil*_*ain 3 hammer.js angular-material angular

我正在使用 Material Design 开发一个 Angular 应用程序。最近我在我的一个页面中发现了内存泄漏。每次加载此页面时,都会花费越来越多的时间来初始化/渲染。

此页面包含一个材料表mat-table(15 列 x 100 行),mat-tooltip每个单元格上都有一个材料工具提示。经过一番研究,我了解到内存泄漏是由于工具提示(而不是表格)造成的。

Github 上的一篇文章建议删除 HammerJS 作为修复,请参阅:https : //github.com/angular/material2/issues/4499

现在内存不再泄漏,我仍然收到以下 2 个警告:

找不到 HammerJS。某些 Angular Material 组件可能无法正常工作。

Hammer.js 未加载,无法绑定 'longpress' 事件。

那么如何告诉 Angular-Material 我对触摸手势不感兴趣,因此我对 HammerJS 不感兴趣?

框架版本:

  • Angular/ Angular CLI v6.0.1
  • Angular-Material v6.4.0
  • 节点 v8.11.1
  • 打字稿 v2.7.2
  • HammerJS - 2.0.8(移除前)

BSt*_*ill 5

我知道这是一个老问题,但对于任何来这里寻求答案的人,我在此 GitHub链接上找到了解决方案

我将此添加到我的 app.module.ts

import { HAMMER_LOADER } from '@angular/platform-browser';

providers: [{
  provide: HAMMER_LOADER,
  useValue: () => new Promise(() => {})
}]
Run Code Online (Sandbox Code Playgroud)

至于单元测试,我单独添加到每个测试类。

编辑(推荐)

这是答案的更好解决方案

安装hammerjs模块

npm 安装hammerjs --save

然后将以下行添加到您的 polyfills.ts

导入 'hammerjs/hammer';