angular - 打开其他垫子菜单时如何隐藏打开的垫子菜单
问题描述
单击导航栏中的一个垫子菜单时,应关闭已打开的另一个垫子菜单。如何隐藏垫子菜单
<button mat-button [matMenuTriggerFor]="menu001" class="menu" >Assessments</button>
<mat-menu #menu001="matMenu" class="m2" overlapTrigger="false">
<a id="dialogUpsert01" class="nav-link" [routerLink]="['/b/dialog/upsert']">Dialog Questions</a>
<a id="dialogSearch02" class="nav-link" [routerLink]="['/b/dialog/search']">Search Questions</a>
<a id="dialogAuthor01" class="nav-link" [routerLink]="['/b/bot/meeting-request']">Meeting Request</a>
</mat-menu>
<button mat-button [matMenuTriggerFor]="menu" class="menu">Assessments2</button>
<mat-menu #menu="matMenu" class="m2" overlapTrigger="false">
<a id="createQuestionid" class="nav-link" [routerLink]="['/ad/q/upsert']">Create Questions</a>
<a id="searchQuestionsId" class="nav-link" [routerLink]="['/ad/search-question']">Search Questions</a>
</mat-menu>
在这种情况下,当 mat menu 1 打开时会触发 mat menu2。然后 mat menu 1 应该被隐藏。
请帮忙。提前致谢
解决方案
根据文档。
您可以找到一个名为menuOpened的输出事件,您可以将其附加到每个 mat-menu,这将帮助您了解打开了哪个菜单并借助
@Viewchild 装饰器,您可以切换另一个。
例如,它可能看起来像这样:
在模板中
<mat-menu #menu1="matMenu" (menuOpened)="menu1Opend()"> </mat-menu> <mat-menu #menu2="matMenu" (menuOpened)="menu2Opend()"> </mat-menu>
在课堂里
export class MyComponent { @ViewChild('menu1') menu1: MatMenu; @ViewChild('menu2') menu2: MatMenu; menu1Opend(){ if(menu2.menuOpen) menu2.closeMenu() } menu2Opend(){ if(menu1.menuOpen) menu1.closeMenu() } }
如果两个菜单在不同的组件中,您可能会使用单例服务。
推荐阅读
- r - R Markdown将不同的表格打印到环境
- google-colaboratory - OSError:无法读取数据(文件读取失败:...错误消息='输入/输出错误'...)
- c - 机器人的 C 编程
- javascript - 使用“import * as jQuery”时出现“TypeError: $ is not a function”
- javascript - 我想在来自 React Native 中的 API 的数组中添加一个值
- blazor - 在 Blazor 服务器应用程序中如何以及在何处实现 JsInterop javascript 端?
- angular - Object(...) 不是 Function.DominoAdapter.makeCurrent 的函数
- laravel - 如何设置 morphTo() 参数
- c# - 创建具有多个一对多关系和 DeleteBehavior 的实体
- angular - Rxjs: Observables 和 Subjects 排序