Ionic 2 - отключить боковое меню на странице входа

Я намерен отключить жестов салфетки для бокового меню на странице входа. Единственное изменение, которое я сделал, это импортировать MenuController и установить swipeEnable в false в конструкторе.

Однако, после запуска, я продолжаю получать синтаксическую ошибку: Неожиданный токен (18:47) во время разбора файла.

import {App, Page, NavController, Nav,NavParams, IonicApp, Storage, LocalStorage, MenuController } from 'ionic-angular';
import {httpService} from '../../services/httpService';
import {HelloIonicPage} from '../hello-ionic/hello-ionic';
import {GettingStartedPage} from '../getting-started/getting-started';
import {SettingsPage} from '../settings/settings';

@Page({
  templateUrl: 'build/pages/log-in/log-in.html',
  providers: [httpService]
})

export class LoginPage {

  static get parameters(){
     return [[NavController],[httpService],[MenuController]];
   }

   constructor(navController, httpService, menu: MenuController) {

     this.menu = menu;
     this.navController = navController;
     this.httpService = httpService;
     this.local = new Storage(LocalStorage);
     this.menu.swipeEnable(false);
   }
}

Спасибо заранее.

Ответ 1

Гюнтер из комментариев должен быть правильным. Конструктор должен быть:

constructor(navController, httpService, menu) {...}

Когда вы используете простой es6 javascript, вы должны объявить свои инъекции в функции static get parameters(). Затем в конструкторе вы объявляете имя переменной, которое представляет каждую инъекцию в том же порядке, в котором вы объявили инъекции в возвращаемом массиве. Синтаксис двоеточия используется, когда вы используете TypeScript и позже преобразуется в явную ноту javascript. Другими словами, синтаксис двоеточия - синтаксический сахар, который доступен только в том случае, если ваше приложение настроено на обработку TypeScript.

Ответ 2

Для меня работали на Ionic2 v.2.2.0

  • Откройте src/app/app.html и добавьте идентификатор к элементу <ion-menu>

Чтобы это,

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

Становится этим.

<ion-menu id="myMenu" [content]="content">
  1. Откройте login.html и удалите код <ion-navbar> с <ion-header>, чтобы меню не отображалось на странице.

  2. Откройте login.ts и импортируйте MenuController из ionic/angular.

В конструкторе установите enable() на MenuCtrl на false и добавьте идентификатор меню в качестве второго параметра. Несмотря на то, что меню не отображается, это приведет к тому, что пользователь не сможет открыть меню.

Пример login.ts

import { Component } from '@angular/core';
import { NavController, MenuController } from 'ionic-angular';

@Component({
  selector: 'page-login',
  templateUrl: 'login.html'
})
export class LoginPage {

  constructor(
    public navCtrl: NavController,
    public menuCtrl: MenuController
  ) {
    this.menuCtrl.enable(false, 'myMenu');
  }
}

Ответ 3

import {  MenuController } from 'ionic-angular';

constructor(....... ........ .......... .......,private menu : MenuController)


ionViewDidEnter() {
    // the root left menu should be disabled on this page
    this.menu.enable(false);
  }

  ionViewWillLeave() {
    // enable the root left menu when leaving this page
    this.menu.enable(true);
  }

это скроет меню

Ответ 4

С Ionic v3.5.3
1. Боковое меню: src/app/app.html   <ion-menu [content]="content" id="menuId">
2. В login.html
- импорт MenuController
- в конструкторе:

constructor(
    public navCtrl: NavController, public menuCtrl: MenuController) {
    this.menuCtrl.enable(false, 'menuId');
    // => menuId is the optional param
}

Подробнее