Ionic2 Ionic 2-运行时错误没有NavController的提供程序

Ionic2 Ionic 2-运行时错误没有NavController的提供程序,ionic2,Ionic2,据我所知,基于此也存在类似的问题。我相信我的情况有点不同。我试图检查本机存储中的一个值,如果它是真的。我正在尝试导航到主页。在阅读了几篇文章之后,我知道我将无法使用NAVA控制器依赖项注入器 我也尝试过使用@ViewChild,但为此,我假设我需要在模板中定义一个变量,我将使用该变量。但是,我使用的是html模板。我是离子2和角2的新手,所以请对我放松一点:-) 我还有别的方法可以做到吗?如果你们有解决这个问题的办法,请再详细说明一下 这是我在app.components.ts(以下)中的代码。

据我所知,基于此也存在类似的问题。我相信我的情况有点不同。我试图检查本机存储中的一个值,如果它是真的。我正在尝试导航到主页。在阅读了几篇文章之后,我知道我将无法使用NAVA控制器依赖项注入器

我也尝试过使用@ViewChild,但为此,我假设我需要在模板中定义一个变量,我将使用该变量。但是,我使用的是html模板。我是离子2和角2的新手,所以请对我放松一点:-)

我还有别的方法可以做到吗?如果你们有解决这个问题的办法,请再详细说明一下

这是我在app.components.ts(以下)中的代码。目前,我刚刚对navCtrl代码进行了注释

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 { LoginPage } from '../pages/login/login';
import { NativeStorage } from '@ionic-native/native-storage';
import { NavController } from 'ionic-angular';
import { HomePage } from '../pages/home/home';

@Component({
  templateUrl: 'app.html',

})
export class ClassetteApp {
  @ViewChild("appNav") nav: NavController;
  rootPage:any = LoginPage;

  constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, private nativeStorage : NativeStorage) {
    platform.ready().then(() => platform.ready().then(() => {
       this.nativeStorage.getItem("userId").then(function(data){
        this.nav.push(HomePage);
        },function(error){
         this.nav.push(LoginPage);
        })
      statusBar.styleDefault();
      splashScreen.hide();
    })
    )}
}
这是我的app.html

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

检查。无法注入NavController,因为作为导航控制器的任何组件都是根组件的子组件,因此它们无法被注入

你的身份证错了

@ViewChild('appNav') nav: NavController
它应该与您在html中提供的
#appNav
id相同

最后,您将使用常规函数作为回调函数。
this
指向函数对象而不是类。因此它无法找到
nav
。使用


更新这个答案,我发现我们可以使用下面的方法:确保你有最新的爱奥尼亚版本。3.3.0. 在这里,您不必向html模板添加变量

import { NavController, Platform } from 'ionic-angular';
import { LoginPage } from '../pages/login/login';

@Component({
  templateUrl: 'app.html'
})
export class MyApp {
  @ViewChild('appNav') nav: NavController;
  loginPage: any = LoginPage;

   /* your code */

   SomeFunction(){
   this.nav.push(loginPage);
  }   
}

选中“无法注入NavController”,因为任何作为导航控制器的组件都是根组件的子组件,因此它们无法被注入。@Sebafereras,感谢您指出app.html,我完全没有注意到这一点。现在我已经实现了
@ViewChild
,我得到了另一个未捕获的错误(承诺中):TypeError:cannotreadproperty'nav'of undefined我只有在添加这行代码
this.nav.push(LoginPage)时才得到这个错误对于错误函数,我是否缺少某些内容或未正确使用它。当出现错误时,我需要重定向到另一个页面。请尝试将
navApp
更改为
appNav
此处->
@ViewChild(“appNav”)nav:NavController非常感谢!。。我真蠢,竟然无视这一点!!在那里,做了,lol请接受苏拉杰的答案,这样我们就可以结束这个问题:)我猜不是ID给了我问题。我改正了。对于这行代码,它仍然给我相同的错误
//this.nav.push(LoginPage)[来自顶部发布的代码示例]。当我把它评论出来时,它工作得很好。对这件事仍然一无所知-(.这是一个范围问题吗?.有什么建议吗?哦,对了!谢谢你指出了这一点!.这真是个好主意!!
import { NavController, Platform } from 'ionic-angular';
import { LoginPage } from '../pages/login/login';

@Component({
  templateUrl: 'app.html'
})
export class MyApp {
  @ViewChild('appNav') nav: NavController;
  loginPage: any = LoginPage;

   /* your code */

   SomeFunction(){
   this.nav.push(loginPage);
  }   
}