Sidemenu停止工作

时间:2018-03-24 05:44:31

标签: angular typescript ionic2 ionic3 side-menu

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

ionic start myApp sidemenu

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

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

我决定使用模态

在测试页面上有一个按钮,可以打开一个评论页面

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

在评论页面上,我想在发送

后转到主页面
constructor(public navCtrl: NavController, public viewCtrl: ViewController) {}

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

问题在于,当我转向主页面时,我的侧边菜单停止工作。

有没有人遇到过这个问题? 怎么解决? 你能用别的东西代替莫代尔吗?

2 个答案:

答案 0 :(得分: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 的更多信息。

答案 1 :(得分:0)

您需要更改CommentPage

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

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

我认为你的问题将会解决......