angular - ionic 4 förhindra/inaktivera enhets hårdvarubakåtknapp


Jag använder angular routing(@angular/router) för ett ionic 4-projekt för att inaktivera enhetens bakåtknapp i ionic 4, prevent-default fungerar inte, nedan är min kod i

app.component.ts

    this.platform.backButton.subscribe(() => {
        if (this.router.url === '/Login') {
          this.util.presentAppExitAlert();
        } else {
          // event.preventDefault();
          console.log("invoing url ", this.router.url);
        }
      });
    });

jag kan inte inaktivera enhetens bakåtknapp, någon hjälp här

Svar #1

initializeApp() {
    this.platform.ready().then(() => {
      this.platform.backButton.subscribeWithPriority(9999, () => {
        document.addEventListener('backbutton', function (event) {
          event.preventDefault();
          event.stopPropagation();
          console.log('hello');
        }, false);
      });
      this.statusBar.styleDefault();
    });
  }

Svar #2

Uppdatera

Lyssnarna för backButton har flyttat till RxJS-observablernas filosofi, så nu görs det lite annorlunda:

const backButtonSubscription = this.platform.backButton
        .subscribeWithPriority(9999, () => {
              // Do my stuff on back button tap
        }));

...

// Now I want to return back button to previous state
backButtonSubscription.unsubscribe();

Förmodligen vill du göra backButtonSubscription till en egenskap i din klass så att du kan komma åt den i andra klassfunktioner.

Original

Jag listade ut hur man ångrar det (återställer knappen till dess tidigare funktion):

Din observatör trycks till this.platform.backButton.observers-arrayen. Så du behöver bara ta bort det sista elementet i listan:

this.platform.backButton.observers.pop();

Hoppas det hjälper någon.

Relaterade artiklar