Устройства Android имеют кнопку «Назад» на панели инструментов меню. Я хочу отключить эту возможность, когда я вхожу в свое приложение и нажимаю кнопку «Назад», чтобы перейти на страницу входа.
Я хочу, чтобы пользователь нажимал кнопку «Назад» после входа в систему, а затем закрывал приложение. Вот мой исходный код для маршрутизации ниже.
if (token) {
this.router.navigate(['/main-tabs/tabs/dashboard'])
} else {
this.router.navigate(['/login']).then();
}
Из вашего вопроса я понял, что после входа пользователя вы не хотите переходить на страницу входа, если нажата кнопка «Назад». Если я правильно понял ваш вопрос, вы можете попробовать следующее решение.
one approach is changing root page
this.navCtrl.setRoot(HomePage);
или
You can achieve this by removing page from stack after successful transition. Place below code inside Login success method
let currentIndex = this.navCtrl.getActive().index;
this.navCtrl.push(DestinationPage).then(() => {
this.navCtrl.remove(currentIndex);
});
Надеюсь, это поможет вам.
Где вы берете переменную navCtrl?
сначала import { NavController } from 'ionic-angular';, а потом constructor(public navCtrl: NavController) { }вот ссылка на документ
@ABHISHEKG, вы связали его документацию с ionic v3, но он заявляет, что использует ionic v4, в котором больше нет метода .remove().
Я думаю, вы можете сделать так:
this.platform.backButton.subscribe((()=>{
if (this.router.url == <insertpathhome>)
{
this.platform.exitApp();
}
else{
//go back
}
});
Можете ли вы предоставить мне ссылку на документацию о маршрутизации ionic 4?
Где вы берете переменную navCtrl?
Я не хочу закрывать приложение, я хочу видеть его, когда я нажимаю правую кнопку Android. (все неиспользуемые, но не закрытые программы (в фоновом режиме))
Я не понимаю ваш вопрос, вы говорите: «Я хочу, чтобы пользователь нажимал кнопку «Назад» после входа в систему, и я закрывал приложение». для меня вы хотите выйти из приложения.
Я пробовал много других ответов, но ни один из них не работает для меня. Но этот работает:
Чтобы запретить возврат входа на аутентифицированную страницу после выхода из системы, просто сделайте что-то подобное в своем app-routing.module.ts :
{
path: 'home',
loadChildren: './home/home.module#HomePageModule',
canActivate: [LoggedAuthGuard]
}
То же самое для противоположного (чтобы предотвратить возврат на страницу входа с помощью кнопки «Назад»):
{
path: 'login',
loadChildren: './login/login.module#LoginPageModule',
canActivate: [NotLoggedAuthGuard]
}
И LoggedAuthGuard, и NotLoggedAuthGuard должны реализовывать CanActivate. Пример кода, как показано ниже (с Promise, но он также работает с логическим возвратом):
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'));
}
}
Для NotLoggedAuthGuard вы просто возвращаете противоположное LoggedAuthGuard.
async canActivate() {
return (await !this.storage.get('access_token'));
}
Надеюсь это поможет.
Этот ответ предоставляет решение для удаления страницы входа из истории браузера путем замены ее страницей, на которую пользователь перешел после успешного входа в систему. Это может быть хорошим и быстрым решением для:
I want to disable the possibility when i login to my app and click on that back button to route on login page.
Я пробовал navigationRoot, но у меня это не работает. Я не могу использовать метод удаления, потому что я использую ionic 4, и у него нет этого метода