【问题标题】:How to access parent navController ionic 2如何访问父导航控制器离子2
【发布时间】:2016-08-10 17:12:40
【问题描述】:

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

该应用程序有一个用于登录页面的 ion-nav,登录后它会进入选项卡导航器。所以应用导航应该是这样的:

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

我的问题是,当我在 Page1 中时,我不知道如何访问 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') 效果很好

【问题讨论】:

    标签: javascript angular ionic2


    【解决方案1】:

    因为您的 navcontroller 是本地的,所以您需要访问 rootNav。 这要归功于 appController。 选项卡正在“根”视图内创建视图。

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

    首先,从 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多