如何访问父navController离子2

时间:2016-08-10 17:12:41

标签: javascript angular ionic2

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

该应用程序具有登录页面的离线导航功能,登录后会进入选项卡导航器。所以应用程序导航将是这样的:

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

我的问题是,我不知道如何在Page1内部访问appNav,以便我可以,例如,注销用户并阻止他从&#34; restrictedTabs&#34;。

我已经尝试过使用@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(&#39; appNav&#39;)它运作良好

1 个答案:

答案 0 :(得分:21)

因为您的navcontroller是本地的,所以您需要访问rootNav。 这要归功于appController。 标签正在&#39; root&#39;内创建一个视图。图。

在其中一个标签内加载的页面中:

首先,从离子角导入导航,与navController相同的位置

JSON.parse(json_string);

请确保您的登录页面也是

import { App, NavController } from 'ionic-angular';

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

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

现在您可以访问rootnav:

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