1

我有一个 Angular 2 应用程序https://github.com/DanWahlin/Angular-JumpStart。我试图为我的一些用例修补 Element.prototype.addEventListener。

这是补丁:

var origLis = Element.prototype.addEventListener;
Element.prototype.addEventListener = function(type, handler, useCapture) {
    console.log("Added");
    return origLis.apply(this, arguments);
}

如果我修补Element.prototype.addEventListener,它会破坏 Angular 2 应用程序。应用程序中未发送任何资源/XHR。我在许多 Angular 2 应用程序上都试过这个。但是,同样的结果。控制台中没有错误

有谁知道为什么会发生这种情况,是否有解决方法?

PS:我不想修补EventTarget.prototype.addEventListener,如此处所述

修改 HTMLElement.prototype.addEventListener 时 Angular 2 应用程序中断

4

1 回答 1

2

如果您尝试对 addEventListener 进行猴子修补,请不要在 Element.prototype 上执行此操作,您可以在 EventTarget.prototype 上执行此操作。在 Angular 中,zone.js 猴子补丁 EventTarget.prototype.addEventListener 以使更改检测工作,因此如果您修改 Element.prototype 这将破坏 Angular 默认行为。

于 2018-03-15T06:26:30.933 回答