我可能只是想着这个错误,因为我在Angular中做这个并且过于复杂,但是我想要做的是设置我的点击事件,所以它只会在触发时触发一个元素被点击,但不是它的孩子。我试图设置一个模式,如果你点击背景覆盖它关闭,但显然我不希望它关闭,如果用户与模态交互。当点击元素的子元素时忽略点击事件
<div class="overlay">
<div class="modal">
</div>
</div>
到目前为止,我已经创造了这个:
@HostListener('document:click', ['$event.target']) public onClick(targetElement: HTMLElement) {
const clickedInside = this._elementRef.nativeElement.contains(targetElement);
if (!clickedInside && targetElement.class.indexOf('overlay') && targetElement.parentElement.tagName === 'GP-MODAL') {
//do stuff
}
}
哪里_elementRef
是角ElementRef
。问题在于它是一种低效率的方式:触发任何点击,只能继续某些元素。感觉触发.overlay
的点击,然后以某种方式没有在.wrapper
中关闭的感觉更理想,但我想不出如何去做。有什么建议?
我没有,也没有使用角度,但也许这个职位可以帮助你? [**如何忽略点击儿童时的点击事件**](https://stackoverflow.com/questions/3864102/how-to-ignore-click-event-when-clicked-on-children)所以也许第二函数或添加'stopPropagation();'将工作?因为我没有使用Angular,所以只是在黑暗中拍摄而已。 – NewToJS