У меня есть приложение Ionic 4, где у меня есть служба, в которой я перехватываю события NavigationStart угловых маршрутизаторов следующим образом.
export class AppRoutingService {
private currentNavigationForward: RoutingPartsModel;
private rootNavigation: string;
constructor(
private navCtrl: NavController,
private router: Router,
private logger: Logger
) {
// Monitor NavigationStart so we can look for a back button and redirect to home
// page if need be
this.router.events.pipe(
filter(e => e instanceof NavigationStart))
.subscribe((ev: NavigationStart) => {
this.handlePageRouting(ev)
});
}
Я хочу сделать это, поскольку у меня есть боковое меню приложения с ярлыкамина каждой из моих страниц функций.Если пользователь переходит на страницу функций из этого меню, то я хочу, чтобы кнопка «Назад» затем переходила на домашнюю страницу, а НЕ на предыдущую страницу функций, с которой он мог перейти.
Я делаю это, следя за собойкаждого маршрута вперед, а затем в handlePageRouting
у меня есть следующий код
if (this.currentNavigationForward.params.fromSideMenu) {
this.currentNavigationForward = undefined;
this.navigateRoot = undefined;
this.logger.debug('handlePageRouting - Navigating to home');
this.router.navigateByUrl(Constants.vals.pageRoutePaths.home);
}
Все это, кажется, работает нормально, однако я обнаружил, что как только (или вскоре после) у меня был экземпляргде приведенный выше код выполняет this.router.navigateByUrl(Constants.vals.pageRoutePaths.home)
, аппаратная кнопка Android перестает работать.Если я перехожу на другую страницу функций с домашней страницы, аппаратная кнопка возврата ничего не делает.Это не вызывает событие NavigationStart
, и при этом на моей домашней странице не вызывается следующая подписка.
this.backButtonSubscription = this.platform.backButton.subscribe(() => {
this.backButtonSubscription.unsubscribe();
this.logger.info('Home exiting app via back button');
navigator['app'].exitApp();
});
Однако кнопка возврата toolbar
по-прежнему работает, это только аппаратные кнопки, которыеперестает работать и никогда не восстанавливается, пока я не выйду из приложения и не перезапущу.
У меня есть следующее env
ionic info
Ionic:
ionic (Ionic CLI) : 4.12.0 (C:\Users\peter\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : @ionic/angular 4.4.0
@angular-devkit/build-angular : 0.13.8
@angular-devkit/schematics : 7.2.4
@angular/cli : 7.3.8
@ionic/angular-toolkit : 1.4.1
Cordova:
cordova (Cordova CLI) : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 8.0.0
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 3.1.2, (and 11 other plugins)
System:
Android SDK Tools : 26.1.1 (C:\Users\peter\AppData\Local\Android\sdk)
NodeJS : v10.15.3 (C:\Program Files\nodejs\node.exe)
npm : 6.4.1
OS : Windows 10
Есть ли у кого-нибудь какие-либо идеи о том, что здесь может быть не так, или какдиагностировать эту проблему?
Заранее спасибо за любую помощь