J'utilise un sidemenu ionic 2. lorsque je glisse cette page de gauche à droite, le menu latéral glisse vers le haut, j'ai besoin de désactiver le glissement sidemenu dans une page particulière.
app.html
<ion-menu [content]="content">
<ion-content>
<ion-list>
<button ion-item *ngFor="let p of pages" menuClose (click)="openPage(p)" >
<ion-icon name="{{p.icon}}" item-left></ion-icon>
{{p.title}}
</button>
</ion-list>
</ion-content>
</ion-menu>
<ion-nav id="nav" [root]="rootPage" #content swipeBackEnabled="true"></ion-nav>
page.html Je suis allé désactiver le swipemenu dans cette page, désactiver uniquement lorsque je glisse
import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
@Component({
templateUrl: 'build/pages/portrait/portrait.html'
})
export class Portrait {
}
page.html
<ion-navbar persianred *navbar>
<button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>
Portrait
</ion-title>
</ion-navbar>
Il existe plusieurs façons de le faire, selon l'endroit où vous souhaitez désactiver le menu:
Si vous souhaitez désactiver le balayage pour afficher sur une seule page, le moyen le plus simple serait d'injecter l'instance MenuController
et d'utiliser la méthode swipeEnable(shouldEnable, menuId)
(Documents ioniques).
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');
}
}
Veuillez noter deux choses:
1) Si vous utilisez l'identifiant, vous devrez ajouter ce id
à votre menu:
<ion-menu [content]="content" side="left" id="menu1">
2) Vous avez besoin que la vue soit déjà chargée pour pouvoir désactiver le menu, donc une façon de le faire est d'utiliser l'événement ionViewDidEnter
.
Si vous souhaitez désactiver le menu latéral sur certaines pages (comme la page de connexion/enregistrement) mais que vous ne voulez pas injecter le MenuController
sur chacune de ces pages, puis gérer le ionViewDidEnter
/ionViewWillLeave
, vous pouvez utiliser un décorateur personnalisé . Jetez un œil à this SO answer for more information.
Si vous souhaitez désactiver le balayage pour afficher partout dans votre application, le moyen le plus simple serait d'utiliser la propriété d'entrée swipeEnabled
(Ionic docs):
<ion-menu [content]="content" [swipeEnabled]="false">...</ion-menu>
Vous pouvez utiliser la méthode enable
de MenuController
pour activer/désactiver le menu d'une page particulière.
Activez l'appel avec l'ID de menu lorsque vous ouvrez la page et désactivez-la lorsque vous vous en éloignez. Vous pouvez omettre l'ID de menu si vous avez une seule instance de menu dans votre application.
meilleur et facile
dans app.component.ts file
changement
<ion-menu [content]="content">
à <ion-menu [content]="content" hidden>
C'est tout, il cachera le menu latéral
Sur la base de cette option "swipeEnabled", ce que j'ai fait a été de définir un conditionnel à l'aide d'une variable booléenne.
<ion-menu [content]="content" [swipeEnabled]="(userLogged) ? true : false">
Cela a très bien fonctionné pour moi.
Juste un conseil: peut-être que n'importe qui remarque que dans le cas où la variable n'est pas globale, l'application restera sans glisser même après avoir sauté sur une autre page. Cependant, au-delà de définir le variabel comme global, cela résoudra, après que l'utilisateur ait fermé et rouvert l'application, le balayage fonctionnera normalement.
la réponse simple et la meilleure va ici ...
Dans votre homepage.ts,
constructor(private menu: MenuController) { }
ionViewDidEnter(){
this.menu.swipeEnable(true);
}
ionViewWillLeave(){
this.menu.swipeEnable(false);
}
Ce qui désactivera le balayage dans toutes les autres pages sauf la page d'accueil.
Dans mon cas, ce qui a fonctionné était d'ajouter [swipeEnabled]="false"
au menu ion. De cette façon, je peux afficher le menu latéral uniquement lorsque vous cliquez sur l'icône de menu. Ceci est basé sur Ionic 2 documentation: Men .