angular - Ionic:如何强制以编程方式从 DOM 中“弹出”页面(无需按下 UI 后退按钮)
问题描述
我需要帮助解决我在使用我们的移动应用程序时遇到的问题。我们的应用程序是使用 ionic 5.1 和 angular v10.19.0 构建的。
我们的应用程序设计为,一旦用户登录并进行完全身份验证,他们就能够在他们所属的不同公司资料之间切换。
问题是当用户切换配置文件时;尽管它们被发送回应用程序主页,但当它们单击特定父选项卡时,会显示上一页。换句话说,它们不会发送到每个选项卡的主父页面。
阅读链接“离子如何处理页面的生命”后,我的理解是,我面临的问题正是文章所描述的。
“页面仅在“弹出”时从 DOM 中删除,例如,通过按下 UI 中的后退按钮或浏览器的后退按钮。由于这种特殊处理,ngOnInit 和 ngOnDestroy 方法可能不会像您通常那样触发认为他们应该这样做。”
所以我的问题是如何强制以编程方式从 DOM 中“弹出”页面(无需按下 UI 上的后退按钮)
我的代码实现如下:
Using the subscription library as follows (contactsPageSub: Subscription;)
ionViewWillEnter() { this.logger.info('ContactListPage', 'ionViewWillEnter'); const contactView = this.firebaseService.getCustomView('TelephoneDirectoryPage'); this.contactsPageSub = contactView.subscribe((viewContact) => { console.log('view ref ionViewWillEnter', [viewContact]); this.viewInfo = viewContact; }, (error) => { this.logger.error(error); }); } ionViewWillLeave() { this.logger.info('ContactListPage', 'ionViewWillLeave'); if (this.contactsPageSub !== undefined) { this.contactsPageSub.unsubscribe(); } }
下面是实际目录的 HTML 代码(父选项卡)
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button tab="directory">
<ion-icon name="people"></ion-icon>
<ion-label>Directory</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
解决方案
从 DOM 中弹出页面的最简单方法是使用NavController
import { NavController } from '@ionic/angular';
constructor(private navController: NavController) { }
someFunction () {
// ...
this.navController.pop(); // if the page can only be navigated to from the app (not typing the url in the browser's navigation bar)
this.navController.navigateBack('parent-page'); // if the page can be accessed directly using the url
}
基本上这正是它ion-back-button
所做的。我个人更喜欢这种navigateBack
方法,因为我不需要担心页面堆栈。它会弹出每一页,直到找到parent-page
. 该pop
方法也有效,但如果用户通过在导航栏上键入其 url 导航到当前页面,它将无效。
推荐阅读
- r - 从 R 中的数值查找工作日平均值
- kubernetes - 通过 Prometheus-Grafana 仪表板上的变量查询服务(vs pod)
- python-3.x - 在不按 Enter Python 3 的情况下接收用户的输入
- node.js - 通过socketio发送多个文件并将文件部分存储在mysql数据库中
- python - 如何通过shebang在bash文件中识别的虚拟环境获取python
- mysql - 用于 MySQL 恢复的 Azure 数据库
- kubernetes - Istio Sidecar 注入失败
- html - 当我将鼠标悬停在下拉菜单上时,它不会保留
- typescript - 返回类型中数组中的keyof是什么意思?
- python - 从 Kubernetes 集群外部访问 Minio