Как определить числа щелчков снаружи Компонент в Angular?Detect click outside Угловой компонент
ответ
import { Component, ElementRef, HostListener, Input } from '@angular/core';
@Component({
selector: 'selector',
template: `
<div>
{{text}}
</div>
`
})
export class AnotherComponent {
public text: String;
@HostListener('document:click', ['$event'])
clickout(event) {
if(this.eRef.nativeElement.contains(event.target)) {
this.text = "clicked inside";
} else {
this.text = "clicked outside";
}
}
constructor(private eRef: ElementRef) {
this.text = 'no clicks yet';
}
}
@SonaG. Я исправил пример plnkr, и я протестировал его в своем мобильном телефоне, и, похоже, он работает. – AMagyar
Да, используя хром. Вы можете попробовать изменить прослушиватель событий. Он должен работать – AMagyar
Это не работает, когда элемент элемента, контролируемый ngIf внутри элемента триггера, поскольку ngIf удаляет элемент из DOM, происходит до события click: http://plnkr.co/edit/spctsLxkFCxNqLtfzE5q? p = preview –
Альтернативой ответ AMagyar в. Эта версия работает, когда вы нажимаете на элемент, который удаляется из DOM с помощью ngIf.
http://plnkr.co/edit/4mrn4GjM95uvSbQtxrAS?p=preview
private wasInside = false;
@HostListener('click')
clickInside() {
this.text = "clicked inside";
this.wasInside = true;
}
@HostListener('document:click')
clickout() {
if (!this.wasInside) {
this.text = "clicked outside";
}
this.wasInside = false;
}
Смотрите также http://stackoverflow.com/questions/35527456/angular2-window-resize-event/35527852#35527852 –