首页 > 解决方案 > 从 Angular-Material 项目中删除 HammerJS

问题描述

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

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

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

现在内存不再泄漏,我仍然收到这两个警告:

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

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

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

框架版本:

标签: angularangular-materialhammer.js

解决方案


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

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

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

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

至于单元测试,我分别添加到每个测试类中。

编辑(推荐)

这是答案的更好解决方案

安装hammerjs模块

npm 安装hammerjs --save

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

导入“锤子/锤子”;


推荐阅读