【问题标题】:Remove HammerJS from a Angular-Material project从 Angular-Material 项目中删除 HammerJS
【发布时间】:2019-01-19 11:08:57
【问题描述】:

我正在使用 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
  • TypeScript v2.7.2
  • HammerJS - 2.0.8(删除前)

【问题讨论】:

  • 您能提供更多关于使用的 Angular 和 Material 版本的信息吗?正在努力使 HammerJS 成为可选和延迟加载
  • @TomaszBłachut,完成。 P.S 如果这是版本问题,我可以更新到最新版本

标签: angular angular-material hammer.js


【解决方案1】:

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

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

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

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

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

编辑(推荐)

这是更好的solution答案

安装hammerjs 模块

npm installhammerjs --save

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

导入'hammerjs/hammer';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2018-01-18
    • 2021-10-23
    相关资源
    最近更新 更多