2017-05-28 8 views
0

Ich habe eine ähnliche Frage vor zwei Tagen aufgeworfen, aber dieses Mal bekomme ich den gleichen Fehler, wenn ich den Code in einem tatsächlichen Gerät oder Simulator ausführen. In einem normalen Browser funktioniert es gut."TypeError: Kann Eigenschaft 'nav' von undefined nicht lesen" in Ionic

Hier ist mein app.component.ts Code:

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(); 
    }); 
    } 

} 

Das ist mein app.html

info
<ion-nav #navApp [root]="rootPage"></ion-nav> 

Dies ist meine Version

global packages: 

    @ionic/cli-utils : 1.2.0 
    Cordova CLI  : 7.0.1 
    Ionic CLI  : 3.2.0 

local packages: 

    @ionic/app-scripts    : 1.3.7 
    @ionic/cli-plugin-cordova  : 1.2.1 
    @ionic/cli-plugin-ionic-angular : 1.2.0 
    Cordova Platforms    : android 6.2.3 
    Ionic Framework     : ionic-angular 3.2.1 

System: 

    Node  : v6.10.2 
    OS   : Windows 10 
    Xcode  : not installed 
    ios-deploy : not installed 
    ios-sim : not installed 

Package.json ist:

{ 
    "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" 
     ] 
    } 
} 
+0

Welche Plattform und wie betreiben Sie Ihre App? –

+0

Ich verwende Android-Simulator und Galaxy Note 4 mit Marshmallow OS. Auf dem Simulator habe ich android N. –

+0

können Sie package.json zu der Frage hinzufügen? –

Antwort

1

Aktualisierung auf die neueste ionische Version 3.3.0 löste das Problem!

+0

Froh, das zu hören :) bitte markieren Sie dies als die angenommene Antwort – sebaferreras

0

Warum ändern Sie nicht einfach den Wert von rootPage, anstatt einen Push zu machen?

Sie haben die Variable

rootPage:any = LoginPage; 

So standardmäßig Ihre Homepage Loginpage sein wird. Wenn Sie in Ihrem local überprüfen, ob der Spitzname existiert, stattdessen eine Seite gedrückt wird, verwenden

this.rootPage = NameofYourPageHere. 

Das sollte funktionieren.

Verwandte Themen