Les appareils Android ont un bouton de retour dans la barre d'outils du menu. Je veux désactiver la possibilité lorsque je me connecte à mon application et clique sur ce bouton de retour pour acheminer sur la page de connexion.
Je veux que si l'utilisateur clique sur le bouton Retour après la connexion, je ferme l'application. Voici mon code initial pour le routage ci-dessous.
if (token) { this.router.navigate(['/main-tabs/tabs/dashboard']) } else { this.router.navigate(['/login']).then(); }
4 Réponses :
Ce que j'ai compris de votre question, c'est qu'après la connexion de l'utilisateur, vous ne voulez pas accéder à la page de connexion si vous cliquez sur le bouton Retour. Si j'ai bien compris votre question, vous pouvez essayer la solution ci-dessous.
une approche consiste à changer la page racine
let currentIndex = this.navCtrl.getActive().index; this.navCtrl.push(DestinationPage).then(() => { this.navCtrl.remove(currentIndex); });
Vous pouvez y parvenir en supprimant la page de la pile après une transition réussie. Placez sous le code dans la méthode de réussite de connexion
this.navCtrl.setRoot(HomePage);
J'espère que cela vous aidera.
J'ai essayé navigateRoot mais cela ne fonctionne pas pour moi. Je ne peux pas utiliser la méthode de suppression car j'utilise l'ionic 4 et je n'ai pas cette méthode
Où prenez-vous la variable navCtrl?
d'abord importez {NavController} depuis 'ionic-angular';
puis constructor (public navCtrl: NavController) {}
voici le lien doc
@ABHISHEKG vous avez lié sa documentation à ionic v3, mais il déclare qu'il utilise ionic v4 qui n'a plus la méthode .remove ().
Je pense que vous pouvez faire comme ça:
this.platform.backButton.subscribe((()=>{ if(this.router.url == <insertpathhome>) { this.platform.exitApp(); } else{ //go back } });
Pouvez-vous me fournir un lien sur la documentation sur le routage ionique 4?
Où prenez-vous la variable navCtrl?
Je ne veux pas fermer l'application, je veux la voir lorsque je clique sur le bouton droit d'Android. (tous les programmes inutilisés mais non fermés (en arrière-plan))
Je ne comprends pas votre question, vous dites: "Je veux que si l'utilisateur clique sur le bouton Retour après la connexion, je ferme l'application." pour moi, vous souhaitez quitter l'application.
J'ai essayé de nombreuses autres réponses, mais aucune d'entre elles ne fonctionne vraiment pour moi. Mais celui-ci fonctionne:
Pour empêcher la connexion de retourner à la page authentifiée après la déconnexion, faites simplement quelque chose comme ça dans votre app-routing.module.ts
: p >
async canActivate() { return (await !this.storage.get('access_token')); }
De même pour l'inverse (pour éviter de revenir en page de connexion avec le bouton retour):
import { Injectable } from '@angular/core'; import {CanActivate} from "@angular/router"; import {Storage} from "@ionic/storage"; @Injectable({ providedIn: 'root' }) export class LoggedAuthGuard implements CanActivate { constructor(protected storage: Storage) { } async canActivate() { return (await !!this.storage.get('access_token')); } }
Et les deux LoggedAuthGuard
et NotLoggedAuthGuard
doivent implémenter CanActivate
. Exemple de code comme ci-dessous (avec Promise
, mais cela fonctionne également avec un retour booléen):
{ path: 'login', loadChildren: './login/login.module#LoginPageModule', canActivate: [NotLoggedAuthGuard] }
Pour le NotLoggedAuthGuard
vous renvoie simplement l'opposé de LoggedAuthGuard
.
{ path: 'home', loadChildren: './home/home.module#HomePageModule', canActivate: [LoggedAuthGuard] }
J'espère que cela vous aidera.
Cette réponse fournit une solution pour supprimer la page de connexion de l'historique du navigateur en la remplaçant par une page, que le l'utilisateur a été accédé après une connexion réussie. Cela pourrait être une bonne solution rapide pour:
Je souhaite désactiver la possibilité lorsque je me connecte à mon application et clique sur ce bouton de retour pour acheminer sur la page de connexion.