Ionic 2-导航控制器canGoBack()始终未定义(Android)

Ionic 2-导航控制器canGoBack()始终未定义(Android),android,angular,ionic2,Android,Angular,Ionic2,这是我的职责: checkStack(){ let canGoBack = this.navCtrl.canGoBack() console.log('canGoBack: ',canGoBack); if(canGoBack === true){ console.log('Not RootPage.'); } else { let alert = this.alertCtrl.create({ titl

这是我的职责:

checkStack(){
    let canGoBack = this.navCtrl.canGoBack()
    console.log('canGoBack: ',canGoBack);

    if(canGoBack === true){
        console.log('Not RootPage.');
    } else {

        let alert = this.alertCtrl.create({
            title: 'Exit',
            message: 'sure?',
            buttons: [
                {
                    text: 'Yes',
                    role: 'cancel',
                    handler: () => {
                        console.log('Cancel clicked');
                    }
                },
                {
                    text: 'No',
                    handler: () => {
                        this.platform.exitApp();
                    }
                }
            ]
        });

        alert.present();
    }
}
我是IonViewDidLoad中的呼叫:

this.platform.registerBackButtonAction(this.checkStack);
但如果我单击BackButton,它将失败,并显示以下消息:

未捕获的TypeError:无法读取未定义的属性“canGoBack”


怎么了?

您收到的错误表明您的navCtrl变量未定义。确保在页面的构造函数中实例化它。像这样:

constructor(
    public navCtrl:NavController
) {
    // constructor logic goes here
}
请注意,包含public对于要分配的变量是必需的,并且在构造函数方法之外不能未定义可用变量。

以下是我的解决方案:

我的定义如下:

initializeApp(){
   this.platform.ready().then(() => {...})
}

并调用构造函数。工作很好-

我也有同样的问题,我需要解决的就是去掉括号

而不是:

this.navCtrl.canGoBack()
使用:


navCtrl在构造函数中定义
this.navCtrl.canGoBack()
this.navCtrl.canGoBack