[英]How to do click outside on mobile iOS with Angular @HostListener
我這樣做,但是在移動iPhone上不起作用。 除了iPhone外,其他任何地方都可以使用
@HostListener('document:click', ['$event.target'])
public onClick(targetElement: HTMLElement): void {
if (!targetElement) {
return;
}
const clickedInside = this._elementRef.nativeElement.contains(
targetElement
);
if (!clickedInside && targetElement.className.indexOf('title') === -1) {
console.log('click outside');
}
經過一些研究,這應該工作
@HostListener('document:touchend', ['$event'])
@HostListener('document:click', ['$event'])
onClick(event: MouseEvent): void {
if (this.container.nativeElement.contains(event.target)) {
// this is inside
} else {
// this is outside
}
}
這種方式適用於iPhone 5,不同之處在於使用了容器變量,該變量是ViewChild對組件中包裝元素的引用
TS:
@ViewChild('container') container;
@HostListener('document:click', ['$event'])
outClickHandler(event: Event): void {
if (!this.container.nativeElement.contains(event.target)) {
console.log('click outside');
}
}
和HTML
<div #container>
...content
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.