J'ai un projet Ionic 4 et j'utilise un menu latéral. Il y a un bouton de menu qui ouvre le menu, et dans le menu est une liste de choix de menu, lorsque sélectionné le menu- choix ferme le menu latéral. Cela fonctionne dans un navigateur, mais pas sur un appareil. Le menu s'ouvrira, mais ne se fermera pas.
Mon menu latéral est dans mon 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>
Voici un exemple de la page d'accueil
<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>
Voici une capture d'écran de l'application
Fonctionne en Chrome Version 77.0.3865.90 Testé et le menu ne se ferme pas sur Android 9
Toute aide est appréciée, j'espère avoir fourni suffisamment d'informations.
- Modifier (en ajoutant 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
}
}
Veuillez voir ceci. Il discute du problème: https://github.com/ionic-team/ionic/issues/19354
Ils suggèrent de mettre à jour @ ionic/angular en 4.11.2. Cela n'a pas fonctionné pour tout le monde, mais une autre solution proposée qui a fonctionné pour quelqu'un est la suivante:
<ion-menu-toggle menu="first" autoHide="false">
Veuillez essayer le code suivant:
<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>
Vous avez mélangé deux façons possibles. Une façon consiste à ajouter ion-menu-toggle
en html. Une autre façon consiste à ajouter une méthode à bascule dans app.component.ts
et pour ajouter un cliquez sur l'événement dans le app.component.html
. Vous avez déjà ajouté la méthode bascule dans die app.component.ts
, mais vous n'avez pas ajouté un click event sur le items dans le app.component.html
..