Отключить салфетки для просмотра sidemenu ionic 2

Я использую sidemenu ionic 2. Когда я прокручиваю эту страницу слева направо, боковое меню скользит, мне нужно отключить sidemenu, проведите пальцем по определенной странице.

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 Я пошел, чтобы отключить swipemenu на этой странице. Отключить только, когда я сажусь

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>

Ответы

Ответ 1

Существует несколько способов сделать это, основываясь на том, где вы хотите отключить меню:

  1. Отключите его только на одной странице
  2. Отключите его на некоторых страницах (не повторяя один и тот же код снова и снова)
  3. Отключите его на всех страницах

1) Отключите его только на одной странице

Если вы хотите отключить прокрутку для просмотра только на одной странице, самым простым способом было бы ввести экземпляр MenuController и использовать метод swipeEnable(shouldEnable, menuId) ( 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');
   }

}

Обратите внимание на две вещи:

1) Если вы используете идентификатор, вам нужно добавить этот id в свое меню:

<ion-menu [content]="content" side="left" id="menu1">

2) Вам нужно, чтобы представление было уже загружено, чтобы отключить меню, поэтому один из способов сделать это - использовать событие ionViewDidEnter.


2) Отключите его на некоторых страницах

Если вы хотите отключить боковое меню на некоторых страницах (например, страницу входа/регистрации), но вы не хотите вводить MenuController на каждой из этих страниц, а затем обрабатывать ionViewDidEnter/ionViewWillLeave, вы можете использовать Custom Decorator. Взгляните на этот ответ SO для получения дополнительной информации.


3) Отключите его на всех страницах

Если вы хотите отключить прокрутку для просмотра везде в своем приложении, самым простым способом было бы использовать swipeEnabled ввода swipeEnabled ( Ionic docs):

<ion-menu [content]="content" [swipeEnabled]="false">...</ion-menu>

Ответ 2

Вы можете использовать enable метод MenuController для включения/выключения меню для конкретной страницы.

Позвоните с помощью идентификатора меню при открытии страницы и отключите ее, когда вы уйдете от нее. Вы можете опустить идентификатор меню, если в приложении есть один экземпляр меню.

Источник

Ответ 3

лучший и легкий

в app.component.ts file

изменение

<ion-menu [content]="content">

to <ion-menu [content]="content" hidden>

Thats it, Он скроет sidemenu

Ответ 4

В моем случае то, что работало, было добавить [swipeEnabled]="false" в ионное меню. Таким образом, я могу отображать боковое меню только при нажатии на значок меню. Это основано на документации Ionic 2: Меню.

Ответ 5

Исходя из этого параметра "swipeEnabled", то, что я сделал, было установлено условным, используя логическую переменную.

<ion-menu [content]="content" [swipeEnabled]="(userLogged) ? true : false">

Это отлично поработало для меня.

Просто совет: может быть, кто-нибудь заметит, что в случае, если переменная не является глобальной, приложение останется без салфетки даже после перехода на другую страницу. Однако, после того, как параметр variabel будет глобальным, после того, как пользователь закроет и снова откроет приложение, салфетка будет работать нормально.

Ответ 6

простой и лучший ответ идет здесь...

На вашей домашней странице,

  constructor(private menu: MenuController) { }

  ionViewDidEnter(){
    this.menu.swipeEnable(true);
  }

  ionViewWillLeave(){
    this.menu.swipeEnable(false);
  }

Это приведет к отключению прокрутки во всех других страницах, кроме домашней страницы.