angular - Ionic 2 - 禁用特定 View 的后退按钮

标签 angular ionic2 typescript1.8

所以我在 Ionic 2 上有点乱,我想知道如何禁用特定 View 的后退按钮。

我正在做的是 this.nav.push(SomePage); 它有效,但是 NavController 会自动为我放置一个后退按钮。如何禁用后退按钮?

注意:我知道我可以使用 this.nav.setRoot(SomePage) 将 SomePage 设置为 root 并且没有后退按钮,但这不提供有用的动画NavController 自动执行。


编辑:这个问题有点老了,但它已经引起了一些关注,所以我认为也应该提一下以备将来引用,还有另一个原因你可能不想使用 this.nav.setRoot 为了推送一个没有后退按钮的页面:它删除预先存在的页面堆栈。因此,如果您仍然希望能够在不为用户提供 UI 方法的情况下返回代码中的上一页,setRoot 将不允许您这样做。

最佳答案

选项 1

通过向ion-navbar组件添加hideBackButton属性将其隐藏在 View 中

<ion-navbar hideBackButton="true">
    <ion-title>Sub Page</ion-title>
</ion-navbar>

选项 2

使用 ViewController 类提供的 .showBackButton(bool) 方法在页面类中隐藏它

import { NavController, ViewController } from 'ionic-angular';

export class SubPage {

    constructor(public navCtrl: NavController, private viewCtrl: ViewController) { }

    ionViewWillEnter() {
        this.viewCtrl.showBackButton(false);
    }

}

来自 Ionic docs 的评论

Be sure to call this after ionViewWillEnter to make sure the DOM has been rendered.

注意

我只想补充一点,当按下硬件后退按钮时,这些选项不会被考虑在内。硬件后退按钮仍然可能导致事件页面从导航堆栈中弹出。

关于angular - Ionic 2 - 禁用特定 View 的后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296999/

相关文章:

android - Ionic/Cordova 应用程序测试非常慢

如果模块包含 require,TypeScript 无法找到该模块

angular - Ionic 2 读取复选框值

javascript - TypeScript 声明用于类导出的模块

typescript - 在 TypeScript 中共同组织类/模块

android - 如何基于 Angular2 应用程序创建 Android 应用程序。

javascript - 如何将 Style 应用于 Angular 中的自定义组件内容?

javascript - 类型 'Promise<User>' Angular 6 上不存在“订阅”

Angular2 CLI 和 Angular2-adal 错误

angular - 等待可观察对象时何时关闭离​​子加载 Controller