Disable swipe to view sidemenu ionic 2

前端 未结 6 1052
傲寒
傲寒 2020-12-24 06:43

I\'m using a sidemenu ionic 2. when I swipe this page from left to right the side menu slides out i need to disable sidemenu swipe in particular page.

app.html

6条回答
  •  既然无缘
    2020-12-24 07:41

    There are several ways to do this, based on where you want to disable the menu:

    1. Disable it just on one page
    2. Disable it on some pages (without repeating the same code over and over again)
    3. Disable it in all the pages

    1) Disable it just on one page

    If you want to disable the swipe to view in just one page, the easiest way would be to inject the MenuController instance and use the swipeEnable(shouldEnable, menuId) method (Ionic docs).

    import { NavController, MenuController } from 'ionic-angular/index';
    import { Component } from "@angular/core";
    
    @Component({
      templateUrl:"home.html"
    })
    export class HomePage {
    
      constructor(private menu: MenuController, ...) { }
    
      ionViewDidEnter() {
        this.menu.swipeEnable(false);
    
        // If you have more than one side menu, use the id like below
        // this.menu.swipeEnable(false, 'menu1');
      }
    
      ionViewWillLeave() {
        // Don't forget to return the swipe to normal, otherwise 
        // the rest of the pages won't be able to swipe to open menu
        this.menu.swipeEnable(true);
    
        // If you have more than one side menu, use the id like below
        // this.menu.swipeEnable(true, 'menu1');
       }
    
    }
    

    Please notice two things:

    1) If you use the id, then you'll need to add that id to your menu:

    2) You need the view to be already loaded to be able to disable the menu, so one way to do it is by using the ionViewDidEnter event.


    2) Disable it on some pages

    If you want to disable the side menu on some pages (like the login/register page) but you don't want to inject the MenuController on each of those pages and then handle the ionViewDidEnter/ionViewWillLeave, you could use a Custom Decorator. Take a look at this SO answer for more information.


    3) Disable it in all the pages

    If you want to disable the swipe to view everywhere in your app, the easiest way would be to use the swipeEnabled input property (Ionic docs):

    ...
    

提交回复
热议问题