如何打开特定菜单Ionic 4双面菜单? 例如:
<ion-menu #menuA menuId="menuA" side="start">
<ion-header>
<ion-toolbar color="primary">
<ion-title>Start Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-menu-toggle auto-hide="false" *ngFor="let p of appPages">
<ion-item [routerDirection]="'root'" [routerLink]="[p.url]">
<ion-icon slot="start" [name]="p.icon"></ion-icon>
<ion-label>
{{p.title}}
</ion-label>
</ion-item>
</ion-menu-toggle>
</ion-list>
</ion-content>
</ion-menu>
<ion-menu #menuB menuId="menuB" side="end" type="push">
<ion-header>
<ion-toolbar color="danger">
<ion-title>End Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-menu-toggle auto-hide="false" *ngFor="let p of appPages">
<ion-item>
zxzxz
</ion-item>
</ion-menu-toggle>
</ion-list>
</ion-content>
</ion-menu>
当我单击工具栏按钮时,它总是打开左侧菜单。 有任何想法吗? Tnx。
答案 0 :(得分:1)
从文档[{https://ionicframework.com/docs/api/menu/]
您可以使用MenuController在单击时打开具有以下功能的菜单
html
<ion-menu side="start" menuId="first">
<ion-header>
<ion-toolbar color="primary">
<ion-title>Start Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<ion-menu side="end" type="push">
<ion-header>
<ion-toolbar color="danger">
<ion-title>End Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
<ion-item>Menu Item</ion-item>
</ion-list>
</ion-content>
</ion-menu>
在TS
import { Component } from '@angular/core';
import { MenuController } from '@ionic/angular';
@Component({
selector: 'menu-example',
templateUrl: 'menu-example.html',
styleUrls: ['./menu-example.css'],
})
export class MenuExample {
constructor(private menu: MenuController) { }
openFirst() {
this.menu.enable(true, 'first'); // replace with MenuA for your case
this.menu.open('first');
}
openEnd() {
this.menu.open('end'); //replace with MenuB
}
}
答案 1 :(得分:0)
完全同意#Dananjai Pai的上述回答。如果可以的话,我会发表评论。只是为了澄清。据我所知,您不能仅依赖menuId和menu。如图所示,您需要显式启用所需的菜单。
在您的ts文件中:
import { LoadingController, MenuController } from '@ionic/angular';
constructor(
private menuCtrl: MenuController,
private router: Router
) {}
openMenu() {
this.menuCtrl.enable(true, 'menuA')
.then(myMenu => {
// console.log(myMenu);
this.menuCtrl.open('menuA');
});
}
然后在您的模板中:
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<!--ion-menu-button autoHide="false" menu="master"></ion-menu-button-->
<ion-button (click)="openMenu()">
<ion-icon name="menu" slot="icon-only"></ion-icon>
</ion-button>
</ion-buttons>
<ion-title>My Devices</ion-title>
</ion-toolbar>
</ion-header>
因此,如果不需要,您不需要使用离子菜单按钮。这可以很容易地扩展为在同一页面和其他页面中使用其他菜单(使用它们的menuId)。关键只是在尝试打开它之前,以编程方式启用您想要的那个!在Ionic 4中效果很好。