我通过构建一个简单的应用程序来学习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;)它运作良好
答案 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)