总的来说,我正在做的是我有一个日期选择器,点击会冒泡到正文,我还有一个 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 来演示,但我不能,因为它似乎可以工作三个,我可以上传我的整个应用程序。