与Zone.js一起使用时,Body事件StopPropagation()无效

时间:2017-08-23 19:01:24

标签: javascript angular addeventlistener ag-grid zonejs

总的来说,我正在做的是我有一个日期选择器,点击起泡到身体,我也有ag-grid,它有一个列菜单,可以监听正文的点击并关闭菜单。请参阅plunkr,只需单击DOB旁边的汉堡并转到过滤器,然后单击日期选择器并选择日期。注意菜单没有关闭。它保持打开状态,因为app.component中添加了事件监听器,一旦它触及正文就会阻止事件传播到网格。一切正常,因为我理解它应该。

https://plnkr.co/edit/QDUVOUEHJYMNSumVFICc?p=preview

 document.body.addEventListener('click', event => {
            if (~event.srcElement.outerHTML.indexOf('mat-calendar-body')) {
               event.preventDefault();
               event.stopPropagation();
               event.stopImmediatePropagation();
            }
        });

我遇到的问题是我的应用中完全相同的设置无法正常工作。事件处理程序被调用,并按正确的顺序,但由于某些原因在我的应用程序中甚至在使用相同的处理程序取消事件后,网格仍然获取事件并关闭菜单。我在这里寻找的是一些可能导致我所看到的行为的想法。显然我会设置一个plunkr来演示,但我不能,因为它似乎工作三,我可以上传我的整个应用程序。

1 个答案:

答案 0 :(得分:0)

此问题已修复,请更新至zone.jsangular的最新版本。