javascript - Angular 7 : close menu when click outside

标签 javascript angular angular7

我想知道每当在父 div #menu 中触发点击时,其中存在无关的 html 标签。

nativeElement.parent 对我不起作用。

HTML代码:

<button #toggleButton (click)="toggleMenu()"> Toggle Menu</button>

 <div class="menu" *ngIf="isMenuOpen" #menu>
    <div>
      I'm the menu. Click outside to close me
    </div>
    </div>

Angular 脚本:

this.renderer.listen('window', 'click',(e:Event)=>{

        if(e.target !== this.toggleButton.nativeElement && e.target!==this.menu.nativeElement){
            this.isMenuOpen=false;
        }
    });

这是行不通的。

最佳答案

将主机添加到组件元标记。

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  host: {
    "(window:click)": "onClick()"
  }
})

停止传播()

The stopPropagation() method of the Event interface prevents further propagation of the current event in the capturing and bubbling phases.

toggleMenu($event) {    
    $event.stopPropagation();
    this.isMenuOpen = !this.isMenuOpen;
  }

  onClick() {
    this.isMenuOpen = false;
  }

示例:https://stackblitz.com/edit/angular-oenkbw

关于javascript - Angular 7 : close menu when click outside,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55452180/

相关文章:

javascript - 当网页存储在计算机上时,cookie 是否有效?

javascript - ngStyle 适用于 ngFor 中的所有元素

java - 如何将 JAVA 8 后端链接到 Angular 前端?

angular - 页面加载出错,提供的动画触发器 "animate"尚未注册

angular - Mat-tree 创建一棵树,其中包含要显示的值和 id

javascript - 使用 Angular 删除 json 对象键值

创建对象后的 JavaScript 函数

Angular Router导航和重新加载需要渲染组件一次但渲染两次

angular - 我们可以在 angular 7 的 index.html 中添加 <div id ="api"></div> 吗?

javascript - 一个 Cookie 中包含更多行