从Angular-Material项目中移除HammerJS

4

我正在开发一个使用Material Design的Angular应用程序。最近我在其中一个页面中发现了内存泄漏问题。每次加载此页面时,初始化/呈现所需的时间都会越来越长。

此页面包含一个Material表格mat-table(15列x100行),每个单元格上都有一个Material工具提示mat-tooltip。 经过一些研究,我了解到内存泄漏是由于Tooltip(而不是表格)引起的。

Github上的一篇文章建议删除HammerJS以解决此问题,请参见:https://github.com/angular/material2/issues/4499

现在内存不再泄漏,但仍然出现以下两个警告:

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

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

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

框架版本:

  • Angular / Angular CLI 版本6.0.1
  • Angular-Material版本6.4.0
  • Node版本8.11.1
  • TypeScript版本2.7.2
  • HammerJS - 2.0.8(在移除之前)

你能提供关于使用的Angular和Material版本的更多信息吗?目前正在努力使HammerJS成为可选项并进行惰性加载。 - Tomasz Błachut
@TomaszBłachut,已完成。附言:如果这是版本问题,我可以更新到最新版本。 - Gil Epshtain
1个回答

6

我知道这是一个老问题,但如果有人来寻找答案,我在GitHub上找到了一个解决方案:链接

我将以下内容添加到我的app.module.ts文件中:

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

providers: [{
  provide: HAMMER_LOADER,
  useValue: () => new Promise(() => {})
}]

关于单元测试,我将其逐个添加到每个测试类中。 编辑(建议) 这是更好的解决方案
通过以下命令安装hammerjs模块:

npm install hammerjs --save

然后将以下行添加到您的polyfills.ts文件中。
import 'hammerjs/hammer';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接