javascript - 应用程序在按下后退按钮时关闭而不是返回 - Ionic 5
问题描述
我正在尝试构建一个离子应用程序。当我打算转到另一页并返回时。我关闭背景。我相信我已经以正确的方式实现了路由器和导航。关于如何调试或可能有什么问题的任何建议?
主页
import { Component, OnInit } from '@angular/core';
import { AuthService } from 'src/app/services/auth.service';
import { NavController } from '@ionic/angular';
@Component({
selector: 'app-home',
templateUrl: './home.page.html',
styleUrls: ['./home.page.scss'],
})
export class HomePage implements OnInit {
constructor(
private authService: AuthService,
public router: Router,
public navCtrl: NavController,
) { }
goToVendors(vendor: any): any {
this.navCtrl.navigateForward([`/dashboard/vendors`]);
}
}
供应商页面
<ion-header>
<ion-toolbar mode="md">
<ion-buttons slot="start" >
<ion-button color="dark" [routerLink]="['/dashboard/home']" routerDirection="backward">
<ion-icon slot="icon-only" name="arrow-back-outline"></ion-icon>
</ion-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
解决方案
如果问题与硬件后退按钮有关,这可能会有所帮助
app.component.ts
import {Component, ChangeDetectorRef} from '@angular/core'
import {Platform} from '@ionic/angular';
import {Router} from '@angular/router'
import {Plugins} from '@capacitor/core';
const {App} = Plugins;
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
exitPages: Array<string> = [
'/dashboard/home',
'/welcome'
];
constructor(
private platform: Platform,
private router: Router,
private changeDetectorRef: ChangeDetectorRef,
) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
// Initalizes android required methods
if (this.platform.is('android')) {
App.addListener('backButton', (state) => this.backButtonListener());
}
});
}
backButtonListener() {
const currentRoute = this.router.url;
// Close app if current route is in exit pages
if (this.exitPages.find(p => p === currentRoute)) {
App.exitApp();
} else {
window.history.back();
this.changeDetectorRef.detectChanges();
}
}
}
通过这种方式,您可以使用硬件按钮设置要关闭应用程序的页面,或者导航到上一页
推荐阅读
- ios - Swift - 无法识别的选择器到实例 - UITapGestureRecognizer
- css - ReactJS如何在反应中将转换应用于内联样式?
- java - 如何自动运行测试?
- c - 编辑 DLL 代码。使用 ESC 启用游戏中的功能
- linux - Greping 引号之间的特定文本
- node.js - 为什么“nodemailer”不发送任何消息?
- sql - SQL:当第一列为空时,对第二列进行排序
- nativescript - Nativescript 升级后失败
- scala - 使用 Gson 转换为 JSON
- python - Pandas 中的 Sort_values 一次考虑多列的值,而不是按顺序遍历列列表