Ionic 2 prevent hardware back button default

后端 未结 1 643
盖世英雄少女心
盖世英雄少女心 2020-12-11 10:20

How can I prevent default navigation when pressing hardware back button? I\'ve tried registerBackButtonAction, but then it overwrites behavior of back button in

1条回答
  •  时光说笑
    2020-12-11 10:57

    As you can see in Ionic docs registerBackButtonAction returns a function:

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

    So you can use that function to restore the default behavior when leaving the page, like this:

    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 ...
        }
    }
    

    So as you can see, the key is to store the callback of the registerBackButtonAction method and use it later when leaving the page (or when you want to restore the default behavior):

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

    0 讨论(0)
提交回复
热议问题