J'ai l'intention de désactiver le geste de glissement pour le menu latéral dans la page de journalisation . Le seul changement que j'ai apporté consiste à importer MenuController et à définir swipeEnable sur false dans le constructeur.
Cependant, après l'avoir exécuté, une erreur de syntaxe persiste: jeton inattendu (18:47) lors de l'analyse du fichier.
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);
}
}
Merci d'avance.
Günter des commentaires devrait être correct. Le constructeur devrait être:
constructor(navController, httpService, menu) {...}
Lorsque vous utilisez pls es6 javascript, vous devez déclarer vos injectables dans la fonction static get parameters () . Ensuite, dans le constructeur, vous déclarez le nom de variable qui représente chaque élément injectable dans le même ordre que vous avez déclaré les éléments injectables dans le tableau renvoyé. La syntaxe des deux points est utilisée lorsque vous utilisez TypeScript et est ensuite transpilée en notation JavaScript es6 simple. En d'autres termes, la syntaxe des deux points est un sucre syntaxique disponible uniquement si votre application est configurée pour gérer TypeScript.
Ce qui suit a fonctionné pour moi sur Ionic2 v.2.2.0
src/app/app.html
et ajoutez un identifiant à votre élément <ion-menu>
Pour que ça,
<ion-menu [content]="content">
Devient ceci.
<ion-menu id="myMenu" [content]="content">
Ouvrez login.html
et supprimez le code <ion-navbar>
de <ion-header>
afin que le menu ne s'affiche pas sur la page.
Ouvrez login.ts
et importez la MenuController
à partir de ionic/angular
.
Dans le constructeur, définissez enable()
sur MenuCtrl
sur false
et ajoutez l'ID de menu comme deuxième paramètre. Même si le menu ne s'affiche pas, cela empêchera l'utilisateur de glisser pour ouvrir le menu.
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');
}
}
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);
}
cela cachera le menu
Avec Ionic v3.5.3
1. Menu latéral: src/app/app.html
<ion-menu [content]="content" id="menuId">
2. Dans le login.html
- importer MenuController
- dans le constructeur:
constructor(
public navCtrl: NavController, public menuCtrl: MenuController) {
this.menuCtrl.enable(false, 'menuId');
// => menuId is the optional param
}