【发布时间】:2019-07-25 12:47:03
【问题描述】:
我想这里很多人都熟悉.contains() 函数,它用于检查元素/节点是否是父节点的子节点。
下面是一个使用.contains() 的简单Angular click-outside 指令。
constructor(private _elRef: ElementRef) {
}
@Output()
public clickOutside = new EventEmitter();
@HostListener('document:click', ['$event.target'])
public onClick(targetElement) {
const clickedInside = this._elRef.nativeElement.contains(targetElement);
if (!clickedInside) {
this.clickOutside.emit(null);
}
}
这很好用,直到当我单击任何 Image 元素时,.contains() 实际上并没有找到它并返回 false。示例:
<div id="parent">
...
<button>
<ng-container>
<img id="child" src="...">
</ng-container>
</button>
...
</div>
知道为什么找不到图像元素吗?
【问题讨论】:
标签: javascript html angular element contains