【发布时间】:2018-09-18 22:11:34
【问题描述】:
问题:如果用户在侧边栏菜单之外点击,我需要添加一种方法来绑定和关闭侧边栏菜单。
我创建了一个指令 (Something like found on this) 来检查单击是否绑定在我的元素之外,但是当用户完全单击侧边栏上我的字体真棒图标时,它被认为是外部单击并且菜单未打开 (该指令效果很好,我点击按钮填充检查它)...
我猜这是我的指令由角度封装引起的问题......
我的代码:
<aside [ngClass]="{'open': menuStatus}" (clickOutside)="menuStatus = false">
<button (click)="menuStatusToggle()">
<fa-icon [icon]="['fas', 'bars']" *ngIf="!menuStatus"></fa-icon>
<fa-icon [icon]="['fas', 'times']" *ngIf="menuStatus"></fa-icon>
</button>
(Menu Content...)
</aside>
绑定事件:
@HostListener('document:click', ['$event.target'])
public onClick(targetElement) {
// Variable content always false when click on icon of _elementRef
const clickedInside = this._elementRef.nativeElement.contains(targetElement);
if (!clickedInside) {
this.clickOutside.emit(null);
}
}
有人有建议吗?封装真的有问题吗?
【问题讨论】:
-
body 上的事件监听器???
-
嗯,我会检查将文档更改为正文是否有效。 @Edit 不起作用...我将在文档上保留侦听器,所以
标签: angular angular5 angular6 encapsulation