我有一个Ionic 4项目,正在使用侧面菜单。有一个菜单按钮可以打开菜单,菜单中有一个菜单选择列表,选中后,菜单选择将关闭侧面菜单。这在浏览器中有效,但在设备上无效。菜单将打开,但不会关闭。
我的侧边菜单在我的app.component.html
中<ion-app>
<ion-menu side="start" type="push" contentId="content1">
<ion-header>
<ion-toolbar color="primary">
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="light-grey">
<ion-list>
<ion-item (click)="toggleMenu()" [routerLink]="['/home']" routerLinkActive="active-link">Home</ion-item>
<ion-item (click)="toggleMenu()" [routerLink]="['/dashboard']" routerLinkActive="active-link">Dashboard</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<ion-router-outlet id="content1" main></ion-router-outlet>
</ion-app>
以下是首页的示例
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-menu-button autoHide="false" menuToggle></ion-menu-button>
</ion-buttons>
<ion-title>
Opportunity Forms
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-refresher slot="fixed" (ionRefresh)="ionRefresh($event)" >
<ion-refresher-content
pulling-icon="arrow-dropdown"
pulling-text="Pull to refresh"
refreshing-spinner="circles"
refreshing-text="Refreshing...">
</ion-refresher-content>
</ion-refresher>
<ion-card>
<ion-card-content>
</ion-card-content>
</ion-card>
</ion-content>
这是该应用程序的屏幕截图
在Chrome版本77.0.3865.90中工作 经过测试,并且在Android 9上菜单无法关闭
感谢您的帮助,希望我已经提供了足够的信息。
-编辑(添加app.component.ts)-
import { Component } from '@angular/core';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import {MenuController} from '@ionic/angular';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private menu: MenuController,
private route: Router
) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
});
}
toggleMenu() {
this.menu.toggle(); //Add this method to your button click function
}
}
答案 0 :(得分:1)
请参阅此。它讨论了这个问题: https://github.com/ionic-team/ionic/issues/19354
他们建议将@ ionic / angular更新为4.11.2。并非对所有人都有效,但另一个对某人有用的建议解决方案是:
<ion-menu-toggle menu="first" autoHide="false">
答案 1 :(得分:0)
请尝试以下代码:
<ion-app>
<ion-menu side="start" type="push" contentId="content1">
<ion-header>
<ion-toolbar color="primary">
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="light-grey">
<ion-list>
<ion-item (click)="toggleMenu()" [routerLink]="['/home']" routerLinkActive="active-link">Home</ion-item>
<ion-item (click)="toggleMenu()" [routerLink]="['/dashboard']" routerLinkActive="active-link">Dashboard</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<ion-router-outlet id="content1" main></ion-router-outlet>
</ion-app>
您混合了两种可能的方式。一种方法是在HTML中添加ion-menu-toggle
。另一种方法是在app.component.ts
中添加切换方法,并在app.component.html
中添加 click事件。您已经在app.component.ts
中添加了 toggle方法,但是尚未在项中的 click事件中添加app.component.html
..
答案 2 :(得分:-1)
您可以使用MenuController
来强制关闭菜单
例如
import { MenuController } from '@ionic/angular';
constructor( public menuCtrl: MenuController) {}
openMenu() {
this.menuCtrl.open();
}
closeMenu() {
this.menuCtrl.close();
}
toggleMenu() {
this.menuCtrl.toggle();
}
有关更多信息,请检查文档: Menu Docs