Ionic2 &引用;TypeError:无法读取属性';导航';“未定义”的定义;在爱奥尼亚

Ionic2 &引用;TypeError:无法读取属性';导航';“未定义”的定义;在爱奥尼亚,ionic2,Ionic2,两天前我提出了一个类似的问题,但这次我在实际设备或模拟器中运行代码时遇到了相同的错误。在普通浏览器上,它可以正常工作 这是我的app.component.ts代码: import { Component, ViewChild } from '@angular/core'; import { Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashSc

两天前我提出了一个类似的问题,但这次我在实际设备或模拟器中运行代码时遇到了相同的错误。在普通浏览器上,它可以正常工作

这是我的app.component.ts代码:

import { Component, ViewChild } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { HomePage } from '../pages/home/home';
import { LoginPage } from '../pages/login/login';
import {NativeStorage} from '@ionic-native/native-storage';
import { NavController } from 'ionic-angular';

@Component({
  templateUrl: 'app.html'
})

export class MyApp {
  rootPage:any = LoginPage;
  @ViewChild('navApp') nav : NavController;
  constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, private nativeStorage: NativeStorage,) {
    platform.ready().then(() => {
         this.nativeStorage.getItem('userExists').then((data)=>{
         this.nav.push(HomePage);
        console.log(data.userExists);
       },(error)=>{
        console.log("No Data in Local Storage");
            this.nav.push(LoginPage);
      })

      statusBar.styleDefault();
      splashScreen.hide();
    });
  }

}
这是我的app.html

<ion-nav #navApp [root]="rootPage"></ion-nav>
Package.json:

{
    "name": "myapp",
    "version": "0.0.1",
    "author": "Ionic Framework",
    "homepage": "http://ionicframework.com/",
    "private": true,
    "scripts": {
        "clean": "ionic-app-scripts clean",
        "build": "ionic-app-scripts build",
        "lint": "ionic-app-scripts lint",
        "ionic:build": "ionic-app-scripts build",
        "ionic:serve": "ionic-app-scripts serve"
    },
    "dependencies": {
        "@angular/common": "4.1.0",
        "@angular/compiler": "4.1.0",
        "@angular/compiler-cli": "4.1.0",
        "@angular/core": "4.1.0",
        "@angular/forms": "4.1.0",
        "@angular/http": "4.1.0",
        "@angular/platform-browser": "4.1.0",
        "@angular/platform-browser-dynamic": "4.1.0",
        "@ionic-native/core": "3.7.0",
        "@ionic-native/facebook": "^3.10.2",
        "@ionic-native/native-storage": "^3.10.3",
        "@ionic-native/splash-screen": "3.7.0",
        "@ionic-native/status-bar": "3.7.0",
        "@ionic/storage": "2.0.1",
        "cordova-android": "^6.2.3",
        "cordova-plugin-console": "^1.0.5",
        "cordova-plugin-device": "^1.1.4",
        "cordova-plugin-facebook4": "^1.9.0",
        "cordova-plugin-nativestorage": "^2.2.2",
        "cordova-plugin-splashscreen": "^4.0.3",
        "cordova-plugin-statusbar": "^2.2.2",
        "cordova-plugin-whitelist": "^1.3.1",
        "ionic-angular": "3.2.1",
        "ionic-native": "^2.5.1",
        "ionic-plugin-keyboard": "^2.2.1",
        "ionicons": "3.0.0",
        "rxjs": "5.1.1",
        "sw-toolbox": "3.6.0",
        "zone.js": "0.8.10"
    },
    "devDependencies": {
        "@ionic/app-scripts": "1.3.7",
        "@ionic/cli-plugin-cordova": "^1.2.1",
        "@ionic/cli-plugin-ionic-angular": "^1.2.0",
        "typescript": "2.2.1"
    },
    "description": "An Ionic project",
    "cordova": {
        "plugins": {
            "cordova-plugin-console": {},
            "cordova-plugin-device": {},
            "cordova-plugin-splashscreen": {},
            "cordova-plugin-statusbar": {},
            "cordova-plugin-whitelist": {},
            "ionic-plugin-keyboard": {},
            "cordova-plugin-facebook4": {
                "APP_ID": "305938313175123",
                "APP_NAME": "myapp"
            },
            "cordova-plugin-nativestorage": {}
        },
        "platforms": [
            "android"
        ]
    }
}

你为什么不改变rootPage的值,而不是进行推送呢

你有这个变量

rootPage:any = LoginPage; 
因此,默认情况下,您的主页将是LoginPage。当您签入localstorage时,如果昵称存在,请使用

this.rootPage = NameofYourPageHere. 

这应该行得通。

更新到最新的爱奥尼亚3.3.0版解决了这个问题

你是在哪个平台上运行你的应用程序的?我使用的是Android模拟器,Galaxy Note 4和棉花糖操作系统。在模拟器上,我有安卓N。你能在问题中添加package.json吗?`“ionic native”:“^2.5.1”,`删除此。。不确定是否与您的问题有关,但我会将ionic更新为最新版本。现在很好用!!谢谢你的评论。!:)
this.rootPage = NameofYourPageHere.