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">
-
Откройте login.html
и удалите код <ion-navbar>
с <ion-header>
, чтобы меню не отображалось на странице.
-
Откройте 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
}
Подробнее