【问题标题】:Angular 4 Removal of EventListeners in zone.jsAngular 4 删除 zone.js 中的 EventListeners
【发布时间】:2018-03-15 13:23:40
【问题描述】:

我目前正在使用原生使用 zone.js 来监控 DOM 上的活动的 Angular 4。

在我的 Angular 应用程序中,出现 zone.js 错误: [违规] 'keydown' 处理程序耗时 209 毫秒 - zone.js

我不想同时从 Angular 中禁用 zone.js,但想禁用 zone.js 的特定功能以防止它将 EventListener 置于“keydown”功能上。

我正在使用 zone.js 的最新版本 08.14,如果能帮助禁用或修改 zone.js 以防止它监视此特定活动,我将不胜感激。

在 Angular 中,“RemoveEventListener”的简单使用不会删除 zone.js 放置的 EventHandlers。这需要 zone.js 的特定内容

【问题讨论】:

  • 虽然我可以看到禁用某些类型的监控是多么方便,但我首先要问的是什么可能导致 keydown 处理程序需要整整 209 毫秒的时间来处理;这可能表明存在设计缺陷。
  • 这是一个很好的问题。似乎与 zone.js 将此事件处理程序与 DOM 相关联。当 DOM 的大小变大时,这是发生的错误之一。虽然我不喜欢它,但它有助于隔离问题(禁用)然后尝试解决。

标签: javascript angular zone.js


【解决方案1】:

如果你可以升级到最新版本的zone.js(0.8.20),你可以在加载zone.js之前在polyfill.ts中设置这个标志

(window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['keydown'];

而且我相信您不需要升级angular 的版本。

【讨论】:

  • 你能提供任何复制回购吗?或者您可以在 angular repo 中发布问题。
  • 奇怪的是,上述方法在 stackblitz 中完美运行,但当我使用 cli 创建一个角度应用程序并做同样的事情时,它就不行了。我已经打开了一个关于它的问题stackoverflow.com/questions/58517069/…
猜你喜欢
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 2018-08-07
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
相关资源
最近更新 更多