【问题标题】:Sidemenu stops working侧边菜单停止工作
【发布时间】:2018-09-02 20:09:05
【问题描述】:

我从菜单中创建了 Ionic 应用程序

ionic start myApp sidemenu

在其中一个页面上会有一个测试,我希望在测试结束后有一个带有评论的必填页面。在他填写评论之前,用户无法到达任何地方。

我创建了一个测试页和一个评论页

我决定使用模态

在测试页面上有一个打开cmets页面的按钮

finishTest() {
    let modal = this.modalCtrl.create('CommentPage');
    modal.present();
}

在cmets页面,我想发送后进入主页面

constructor(public navCtrl: NavController, public viewCtrl: ViewController) {}

onSubmit(form: NgForm) {
  this.navCtrl.setRoot(HomePage);
}

问题是当我转到主页时,我的侧边菜单停止工作。

有人遇到过这个问题吗? 如何解决? 你能用别的东西代替模态吗?

【问题讨论】:

  • 请从左向右滑动主页,然后显示侧边菜单
  • 这不起作用,就像按下按钮<button ion-button menuToggle> <ion-icon name="menu"></ion-icon> </button>

标签: angular typescript ionic2 ionic3 side-menu


【解决方案1】:

您的代码的问题在于,当您将页面作为模态打开时,该模态有自己的导航堆栈。因此,当您在模态框内执行 this.navCtrl.setRoot(HomePage); 时,实际上是将该页面设置为模态框导航堆栈的根页面,其中侧边菜单不起作用。

为了解决这个问题,您需要获取应用中根 NavController 的引用,如下所示:

import { Component } from '@angular/core';
import { App } from 'ionic-angular';

@Component({... })
class YourModalPage {

  constructor(public appCtrl: App, ...) {}

  pushPage() {
    this.appCtrl.getRootNav().push(HomePage);
  }

  setPageAsRoot() {
    this.appCtrl.getRootNav().setRoot(HomePage);
  }

}

您可以找到有关使用不同导航堆栈的更多信息here

【讨论】:

  • 如果我们从 HomePage 移动到新页面 'ProgPage' (this.navCtrl.setRoot('ProgPage');),它不在菜单中,然后我们到达 Modals 'CommentPage',然后从模态到主页,不起作用
【解决方案2】:

您需要更改CommentPage

constructor(public navCtrl: NavController, public viewCtrl: ViewController,public appCtrl: App) {}

onSubmit(form: NgForm) {
  this.appCtrl.getRootNav().setRoot(HomePage);
}

我认为你的问题会得到解决...

【讨论】:

    猜你喜欢
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多