angular - Ionic 2 防止硬件后退按钮默认

标签 angular typescript ionic-framework ionic2 ionic3

如何在按下硬件后退按钮时阻止默认导航?我试过 registerBackButtonAction,但随后它会覆盖我不想要的每个页面中的后退按钮行为。

这也没有帮助。

document.addEventListener("backbutton", (event) => {
      event.preventDefault();
  }, false);

最佳答案

正如您在 Ionic docs 中看到的那样registerBackButtonAction 返回一个函数:

A function that, when called, will unregister its back button action.

因此您可以使用该函数在离开页面时恢复默认行为,如下所示:

import { Component} from '@angular/core';

@Component({
    selector: 'page-home',
    templateUrl: 'home.html'
})
export class HomePage {

    // Property used to store the callback of the event handler to unsubscribe to it when leaving this page
    public unregisterBackButtonAction: any;

    constructor(...) { ... }

    ionViewDidEnter() {
        this.initializeBackButtonCustomHandler();
    }

    ionViewWillLeave() {
        // Unregister the custom back button action for this page
        this.unregisterBackButtonAction && this.unregisterBackButtonAction();
    }

    public initializeBackButtonCustomHandler(): void {
        this.unregisterBackButtonAction = this.platform.registerBackButtonAction(() => {
            this.customHandleBackButton();
        }, 10);
    }

    private customHandleBackButton(): void {
        // do what you need to do here ...
    }
}

因此如您所见,关键是要存储 registerBackButtonAction 方法的回调,以便稍后在离开页面时(或当您想恢复默认行为时)使用它:

this.unregisterBackButtonAction = this.platform.registerBackButtonAction(() => {
    this.customHandleBackButton();
}, 10);

关于angular - Ionic 2 防止硬件后退按钮默认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483627/

相关文章:

Angular 2 生产包文件太大

node.js - 如何在 Typescript 中表示抽象类的任何子类的类型?

reactjs - Next.Js Redux Wrapper w/Typescript - 实现错误,存储类型不存在

angular - 如何使用 Ionic 4 检测平台

javascript - 如何将(Cordova)插件与 Ionic 2/TypeScript 一起使用?

javascript - CSS 中的 Angular 组件样式

angular - 使用 HttpClient 时出现 Angular 错误的 Nativescript

dependency-injection - 如何在 ES6 中使用 angular2 DynamicComponentLoader?

Typescript + gulp-sourcemaps 生成 map 但浏览器 DevTools 无法识别它

android - 无法在 Android 设备上运行 ionic 应用程序