Angular-侦听特定的DOM插入,然后侦听滚动事件

问题描述 投票:1回答:1

假设这是小部件元素的HTML:

<div class = "a b">
     <div class = "c d e">
     </div>
</div>

我想听那个添加到DOM的小部件(最好是被html类捕获)。添加后,我想监听滚动事件(鼠标滚轮或下拉滚动器),以便用户滚动时,该小部件将从DOM中删除。

[我听说过各种实现,包括使用document.queryselector()@HostListener,事件发射器,ngDoCheck等。我正在寻找对性能影响最小的实现,最好是在我的角度组件中,我们称之为MyComponent

编辑:我正在处理的应用程序是大型企业应用程序

编辑2:我无权访问小部件的Angular组件,这就是为什么我不能使用@ViewChild的原因,所以我能捕捉到它的唯一方法是将其添加到DOM时的类名。单击图标后显示窗口小部件。我也找不到该图标的onclick事件处理程序。

javascript angular typescript dom
1个回答
0
投票
您可以通过事件委托来完成。将滚动侦听器分配给文档,然后搜索并删除div(如果存在)。

let new_div = document.createElement('div'); new_div.id = 'your_widget'; new_div.style.height = '5000px'; new_div.innerText = "hello"; document.body.appendChild(new_div); document.addEventListener('scroll', (e)=>{ if(document.querySelector('#your_widget')){ document.querySelector('#your_widget').remove(); } })
<body></body>
© www.soinside.com 2019 - 2024. All rights reserved.