Próbuję utworzyć dyrektywę dla rozwijanej listy, o ile pracuję z pojedynczą, działa jak charm. Widzę kliknięcie poza zakresem, używając następującego kodu:Zamknij listę rozwijaną, gdy drugi jest otwierany/document.click zablokowany przez kliknięcie Angular 5
@HostListener('document:click', ['$event'])
onDocumentClick(event: any): void {
console.log("document click");
// close
}
@HostListener('click')
onClick(): void {
console.log('click on ');
// toggle
}
Problem występuje, gdy utworzono 2 rozwijane listy rozwijane. Chciałbym zamknąć pierwsze menu po drugim uruchomieniu, jednak gdy kliknę na drugie menu, uruchamiane jest tylko zdarzenie "kliknięcie", a "document.click" nie jest wykonywane. Spodziewam się, że oba zdarzenia powinny wystąpić, chyba że jawnie użyję preventDefault przy kliknięciu, ale najwyraźniej dzieje się to automatycznie.
Jakie powinno być prawidłowe podejście w ustawieniu kątowym 5, aby zamknąć pierwsze menu rozwijane, gdy drugi jest otwarty?
Dzięki ale "wewnątrz click" nie zostanie wyzwolony”-> if (this._element.nativeElement.contains (event.target)) { console.log ("kliknij"); } nie działa –
Czy masz błędy lub po prostu nie dostaniesz się do wnętrza, jeśli? –
Brak błędów, po prostu nie dostaję się do wnętrza –