angular - 我们如何使用多自定义 Mat Menu?
问题描述
我的应用程序需要使用多自定义菜单。我可以将此@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
代码用于单个 mat 菜单。请建议我如何为多菜单实现这一点,并请找到示例代码供您参考。
菜单-example.html
<button mat-button [matMenuTriggerFor]="menu" (mouseenter)="someMethod()">Menu</button>
<mat-menu #menu="matMenu">
<button mat-menu-item >User</button>
<button mat-menu-item >Cards</button>
<button mat-menu-item >About</button>
</mat-menu>
菜单示例.ts
import {Component, ViewChild} from '@angular/core';
import { MatMenuTrigger } from '@angular/material';
@Component({
selector: 'menu-overview-example',
templateUrl: 'menu-overview-example.html',
styleUrls: ['menu-overview-example.css'],
})
export class MenuOverviewExample {
@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
someMethod() {
this.trigger.openMenu();
}
}
我的问题是:如何使用多时间@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
和this.trigger.openMenu();
下面的代码会起作用吗?
@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
@ViewChild(MatMenuTrigger) trigger01: MatMenuTrigger;
someMethod() {
this.trigger.openMenu();
}
anotherMethod() {
this.trigger01.openMenu();
}
解决方案
编辑:经过一段时间的思考,您似乎正在寻找一种方法来使嵌套菜单在菜单项悬停时自动出现。
您可以尝试做的是将菜单触发器的引用传递给showNestedMenu
方法(如下面的代码所示):
<button mat-button [matMenuTriggerFor]="menu" (mouseenter)="showMenu()">Menu</button>
<mat-menu #menu="matMenu">
<button mat-menu-item [matMenuTriggerFor]="userMenu" (mouseenter)="showNestedMenu(nestedMenuTrigger)" #nestedMenuTrigger="matMenuTrigger">User</button>
<mat-menu #userMenu="matMenu">
<button mat-menu-item>John Tan</button>
<button mat-menu-item>Logout</button>
</mat-menu>
<button mat-menu-item>Cards</button>
<button mat-menu-item>About</button>
</mat-menu>
import { MatMenuTrigger } from '@angular/material';
// ...
export class MyComponent {
showNestedMenu(menu: MatMenuTrigger) {
menu.openMenu();
}
}
原始答案
如果您要求的是多菜单/嵌套菜单,则可以通过将另一个菜单与菜单触发器绑定到菜单项来完成:
<button mat-button [matMenuTriggerFor]="menu" (mouseenter)="someMethod()">Menu</button>
<mat-menu #menu="matMenu">
<button mat-menu-item [matMenuTriggerFor]="userMenu">User</button>
<mat-menu #userMenu="matMenu">
<button mat-menu-item>John Tan</button>
<button mat-menu-item>Logout</button>
</mat-menu>
<button mat-menu-item>Cards</button>
<button mat-menu-item>About</button>
</mat-menu>
查看文档以获取更多信息。
推荐阅读
- python - 如何将 if 语句用于字典键并填充另一个字典?
- javascript - 如何写出 arr 中的每个值,这是一个字符串数组,每行一个项目
- c++ - 如何使用 CMake 创建包
- python - 如何以有效的方式将列数据添加为行?
- apache-kafka - 尝试使用可为空键模式发布记录时,Kafka REST 代理中的异常“正在注册的模式与早期模式不兼容”
- python-3.x - 我在 Python 上使用 Speech_recognition 包得到 [errno -9999] 意外主机错误
- angular - 如何发送大量请求,但要处理第一个请求的结果,然后使用 angular 和 Observables 发送第二个请求
- javascript - Javascript 表单清理
- react-native - Redux 操作中的异步存储
- c# - 骑自行车者检测球员