【发布时间】:2018-05-21 09:10:37
【问题描述】:
我正在尝试为下拉菜单创建一个指令,只要我使用单个下拉菜单,它就像一个魅力。我可以使用以下代码点击外部下拉菜单:
@HostListener('document:click', ['$event'])
onDocumentClick(event: any): void {
console.log("document click");
// close
}
@HostListener('click')
onClick(): void {
console.log('click on ');
// toggle
}
当创建了 2 个下拉菜单时会出现问题。我想在打开第二个下拉菜单时关闭第一个下拉菜单,但是当我点击第二个下拉菜单时,只有“click”事件被触发并且“document.click”没有被执行。我希望这两个事件都应该发生,除非我在点击时明确使用 preventDefault 但显然这会自动发生。
在打开第二个下拉菜单时,Angular 5 中关闭第一个下拉菜单的正确方法应该是什么?
【问题讨论】:
-
我尝试使用指令来实现这一点,但没有成功。每次打开或关闭下拉列表时,我都必须向组件添加一个私有属性并标记,以便在单击另一个下拉列表时考虑关闭它。我遵循了来自@J. Frankenstein 的示例代码
标签: angular domdocument angular2-directives angular-directive