单击多个 div 但只显示一个 class (Angular2)?
Clicking on multiple divs but showing only one class (Angular2)?
我正在 angular 中处理模态 window,当我打开模态 window 并在模态 window 外部单击(阴影背景)时,我总是得到那个 div 元素的错误 class。
示例:我点击模态,模态 class 出现,这没问题,当我点击阴影背景时,模态 class又出现了,为什么?应该出现另一个 class。
这是代码(打字稿文件):
@ViewChild('ova') ova; //accessing the div via refference tag in html
@HostListener('document:click') onClick($event){
if (this.show)
console.log("display event: "+ this.ova.nativeElement.className)
这里是对应的.html文件:
<div class="modalall">
<div *ngIf="closeIt" (click)="close()"n class="modalclose">x</div>
<div #ova class="modal">
some text
</div>
</div>
试试这个(在指令中更好):
@HostListener('document:click', ['$event', '$event.target'])
onClick(event: MouseEvent, targetElement: HTMLElement): void {
if (!targetElement) {
return;
}
const clickedInside = this.elementRef.nativeElement.contains(targetElement);
if (!clickedInside) {
this.clickOutside.emit(event);
}
}
我正在 angular 中处理模态 window,当我打开模态 window 并在模态 window 外部单击(阴影背景)时,我总是得到那个 div 元素的错误 class。
示例:我点击模态,模态 class 出现,这没问题,当我点击阴影背景时,模态 class又出现了,为什么?应该出现另一个 class。
这是代码(打字稿文件):
@ViewChild('ova') ova; //accessing the div via refference tag in html
@HostListener('document:click') onClick($event){
if (this.show)
console.log("display event: "+ this.ova.nativeElement.className)
这里是对应的.html文件:
<div class="modalall">
<div *ngIf="closeIt" (click)="close()"n class="modalclose">x</div>
<div #ova class="modal">
some text
</div>
</div>
试试这个(在指令中更好):
@HostListener('document:click', ['$event', '$event.target'])
onClick(event: MouseEvent, targetElement: HTMLElement): void {
if (!targetElement) {
return;
}
const clickedInside = this.elementRef.nativeElement.contains(targetElement);
if (!clickedInside) {
this.clickOutside.emit(event);
}
}