如何访问父 navController ionic 2

How to access parent navController ionic 2

我正在通过构建一个简单的应用程序来学习 Ionic 2,但是我 运行 遇到了一个我无法解决的问题。

该应用程序的登录页面有离子导航,登录后会进入标签导航器。所以应用程序导航应该是这样的:

app<Nav> {
    LoginPage,
    restrictedTabs<Nav> {
        Page1,
        ...
    }
}

我的问题是,当我在第 1 页时,我不知道如何访问 appNav,这样我就可以注销用户并阻止他访问 "restrictedTabs"。

我已经按照文档所说的那样使用@ViewChild

进行了尝试
import {Component, ViewChild} from '@angular/core';
import {NavController} from 'ionic-angular';

@Component({
  templateUrl: 'page1url...'
})
export class ProfilePage {
    @ViewChild('appNav') appNav : NavController

    constructor(private _nav: NavController) {

    }

    pushNewPlace() {
        console.log(this._nav.rootNav);
        console.log(this._nav.parent);
    }

    ngAfterViewInit() {
      console.log(this.appNav);
    }
}

但是 appNav 始终未定义,rootNav 也是如此(我在一些教程中看到过...)。如果我在 LoginPage 控制器上尝试 @ViewChild('appNav') 它工作正常

因为您的导航控制器是本地的,所以您需要访问 rootNav。 这要归功于 appController。 选项卡正在 'root' 视图中创建一个视图。

在其中一个选项卡内加载的页面中:

首先,从 ionic-angular 导入 Nav,与 navController

相同的地方
import { App, NavController } from 'ionic-angular';

一定要有你的登录页面

import { LoginPage } from 'pages/login/login';

然后在您的构造函数中提供它:

constructor(public navCtrl: NavController, public appCtrl: App) 

现在您可以访问根导航了:

this.appCtrl.getRootNav().setRoot(myLoginPage);