Cordova 如何停止在Ionic 3中离开当前页面?

Cordova 如何停止在Ionic 3中离开当前页面?,cordova,ionic-framework,ionic3,Cordova,Ionic Framework,Ionic3,根据Ionic 3文件,这应该是可行的: ionViewWillLeave(): boolean { if (this.cantLeave) { let alert = this.alertCtrl.create({ title: 'You can\'t leave', subTitle: 'You stay and work.', buttons: ['Oh sorry'] });

根据Ionic 3文件,这应该是可行的:

ionViewWillLeave(): boolean {
    if (this.cantLeave) {
        let alert = this.alertCtrl.create({
            title: 'You can\'t leave',
            subTitle: 'You stay and work.',
            buttons: ['Oh sorry']
        });
        alert.present();
    }
    return this.cantLeave;
}
但事实并非如此。警报出现,但页面仍会更改。然而,在这里它说,返回真或返回假将告诉离子进行页面更改或停止它。

我做错了什么?

你需要使用导航守卫。 检查导航防护部分

生命周期挂钩是ionViewCanLeave而不是ionViewWillLeave

你需要使用导航守卫。 检查导航防护部分

生命周期挂钩是ionViewCanLeave而不是ionViewWillLeave


我也试过了。它什么都不做,甚至不会被触发。可能是因为我使用了一个标签集来导航?这很奇怪。。你能打印cantlave值吗?是的,它是一个正确的布尔值。在我的代码中,它实际上有点复杂,它从一个服务中获取它的值,所以我没有在示例中包括它。但它工作得很好,这不是问题所在。它的价值来自于服务。。在这种情况下,这里没有足够的信息。。。可能是因为它是异步的?您必须提供一个否,它不是异步的。这是一个简单的单例服务,在整个应用程序中存储值。这是一个简单的布尔值。但是即使我用一个变量替换它,就像在这个例子中一样,它也不起作用。我也试过了。它什么都不做,甚至不会被触发。可能是因为我使用了一个标签集来导航?这很奇怪。。你能打印cantlave值吗?是的,它是一个正确的布尔值。在我的代码中,它实际上有点复杂,它从一个服务中获取它的值,所以我没有在示例中包括它。但它工作得很好,这不是问题所在。它的价值来自于服务。。在这种情况下,这里没有足够的信息。。。可能是因为它是异步的?您必须提供一个否,它不是异步的。这是一个简单的单例服务,在整个应用程序中存储值。这是一个简单的布尔值。但是,即使我用一个变量替换它,就像在示例中一样,它也不起作用。
ionViewCanLeave(): boolean {
    if (this.cantLeave) {
        let alert = this.alertCtrl.create({
            title: 'You can\'t leave',
            subTitle: 'You stay and work.',
            buttons: ['Oh sorry']
        });
        alert.present();
    }
    return this.cantLeave;
}