Проблема: Мне нужно добавить способ для привязки и закрытия меню боковой панели, если пользователь щелкнет за пределами этого.
Я создал директиву (Что-то , подобное найденному на этом ), который проверяет, является ли нажатие привязкой вне моего элемента, но когда пользователь щелкает точно по моему удивительному шрифту значку на боковой панели, это считается внешним щелчком, и меню не открывается (директива работает хорошо, я проверяю, нажимая на кнопкуpadding) ...
Я полагаю, это проблема моей директивы, вызванная угловыми инкапсуляциями ...
Мой код:
<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);
}
}
У кого-нибудь есть предложение?Инкапсуляция действительно проблема?