javascript - 除某些点击事件外,Mat-Menu 上的 StopPropagation - Angular
问题描述
我实现了一个角度应用程序(@latest 版本),在我的实现中,我使用了一个 mat-menu 来显示一些自定义组件,其中包含一些自定义选项以及一个应用按钮。默认情况下,如果我们立即在菜单弹出屏幕中单击,它将关闭。所以我stopPropagation
在我的自定义组件上添加了一个以防止关闭弹出操作。
但是我需要在应用按钮单击事件时关闭菜单弹出窗口。但它失败了,因为stopPropagation
在父级别阻止按钮关闭操作。
如何stopPropagation
仅针对指定按钮进行转义。
Stackblitz URL:https ://stackblitz.com/edit/angular-mat-menu-stop-propagation?embed=1
文件:app.component.html
<button mat-button [matMenuTriggerFor]="menu">Menu</button>
<mat-menu #menu="matMenu">
<menu-toolbar (click)="$event.stopPropagation()"></menu-toolbar>
</mat-menu>
文件:menu-toolbar.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'menu-toolbar',
templateUrl: './menu-toolbar.component.html',
styleUrls: [ './menu-toolbar.component.css' ]
})
export class MenuToolbarComponent {
name = 'Angular';
applyChanges(): void {
// some actions done
console.log('Changes applied successfully...');
}
}
文件:menu-toolbar.component.html
<div>
<mat-checkbox>Item #1</mat-checkbox>
<mat-checkbox>Item #2</mat-checkbox>
<mat-checkbox>Item #3</mat-checkbox>
</div>
<button mat-button (click)="applyChanges($event)">Apply</button>
注意:如果我添加
stopPropagation
到复选框,如果我单击复选框外部,它会关闭弹出窗口。所以,我在组件级别添加了。
请帮助我如何摆脱stopPropagation
“应用”按钮。
解决方案
取下stopPropagation
打开
<menu-toolbar></menu-toolbar>
并像这样戴上它div
:
<div (click)="$event.stopPropagation()">
<mat-checkbox>Item #1</mat-checkbox>
<mat-checkbox>Item #2</mat-checkbox>
<mat-checkbox>Item #3</mat-checkbox>
</div>
<button mat-button (click)="applyChanges($event)">Apply</button>
推荐阅读
- python - 它向我显示了一个 TypeError 列表不可调用 [python]
- java - 如何在 Java 类的 Kotlin 中声明扩展静态函数?
- php - Symfony 简单 PHPUnit 退出代码 1,未显示错误
- php - 阿贾克斯帖子是空的
- python - Python Tkinter 按钮文本不可见
- python-3.x - 如何在 python 中并行运行同一个函数多次?
- scala - 当集群上的人口规模增加时,Spark 应用程序会卡住
- c# - 无法在上传时设置 Azure Block Blob 元数据
- java - 找不到 jlink 模块 XXX
- react-native - 使用 fetch 中的 post 请求以 react native 下载 Pdf 文件