Priyanka C
Priyanka C

Reputation: 300

Problem in closing menu in ionic when I test in device

I am new to ionic4. Before that i try ionic3 in that menu is working proper. But now i migrate to ionic4. I just create new project with inbuild menu option. It run successfully in web browser But When I run on my Android mobile device , Menu open but after clicking it did not close.

I use: Ionic version:5.2.3 Node version:v10.16.3 Cordova version:9.0.0

First attempt: my app.component.html file:

<ion-app>
   <ion-menu type="overlay"side="start" contentId="menu-content">
   <ion-header>
     <ion-toolbar>
       <ion-title>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]" *ngFor="let p of appPages" (click)="togglemenu()">
           <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-router-outlet main  id="menu-content"></ion-router-outlet>
</ion-app>

my app.component.ts file:

import { Component } from '@angular/core';

import { Platform,MenuController } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.scss']
})
export class AppComponent {
  public appPages = [
    {
      title: 'Home',
      url: '/home',
      icon: 'home'
    },
    {
      title: 'List',
      url: '/list',
      icon: 'list'
    }
  ];

  constructor(
    private platform: Platform,
    private splashScreen: SplashScreen,
    public menu: MenuController,
      private statusBar: StatusBar
  ) {
    this.initializeApp();
  }

  initializeApp() {
    this.platform.ready().then(() => {
      this.statusBar.styleDefault();
      this.splashScreen.hide();
    });
  }

  togglemenu(){
      this.menu.close();
      console.log("clikc");

  }
}

Second attempt:

<ion-app>
  <ion-split-pane  contentId="menu-content" side="start"> 
   <ion-menu type="overlay">
   <ion-header>
     <ion-toolbar>
       <ion-title>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]" *ngFor="let p of appPages">
           <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-router-outlet main></ion-router-outlet>
</ion-split-pane> 
</ion-app>

Upvotes: 0

Views: 711

Answers (1)

brent
brent

Reputation: 502

Looking at the ion-menu-toggle documentation it states:

"In case it's desired to keep ion-menu-toggle always visible, the autoHide property can be set to false."

https://ionicframework.com/docs/api/menu-toggle

It looks like you have this set to false. You can remove auto-hide="false" because it defaults to true.

Upvotes: 0

Related Questions