本文档详细介绍了 Ionic Framework 如何与 Angular Router 集成,在 Ionic Angular 应用程序中提供导航功能。有关 Vue Router 集成的信息,请参阅Vue Router 集成。
Ionic Framework 通过专门的组件和服务,与 Angular Router 实现无缝集成,增强了 Angular 的路由功能,并加入了移动端优化的导航特性。这种集成实现了原生般的页面过渡、正确的历史记录管理以及在导航过程中组件状态的保持。
来源:仓库概览中的导航和路由系统图
Ionic Framework 中的 Angular Router 集成围绕几个关键组件构建
IonRouterOutlet 是一个扩展了 Angular 的 RouterOutlet 的指令,它提供了:
IonicRouteStrategy 是 Angular 的 RouteReuseStrategy 的自定义实现,它:
NavController 服务提供带有正确动画的程序化导航
navigateForward():以前进动画导航到新页面navigateBack():以后退动画导航到上一页navigateRoot():导航到根页面,清除导航堆栈来源:仓库概览中的导航和路由系统图
要使用 Ionic 的 Angular 路由集成,您需要在应用程序中配置 IonicRouteStrategy 并使用 ion-router-outlet 组件
ion-router-outletIonRouterOutlet 指令在内部管理一个视图堆栈,这使得它能够:
来源:仓库概览中的导航和路由系统图
在 Ionic Angular 应用程序中有多种导航方式
您可以使用标准的 Angular Router 导航
标准的 Angular 路由链接按预期工作
为了更好地控制动画,请使用 NavController 服务
Ionic 添加了导航生命周期事件,这些事件补充了 Angular 的组件生命周期
| 事件 | 描述 |
|---|---|
ionViewWillEnter | 组件即将进入视图动画时触发 |
ionViewDidEnter | 组件进入视图动画完成后触发 |
ionViewWillLeave | 组件即将离开视图动画时触发 |
ionViewDidLeave | 组件离开视图动画完成后触发 |
这些事件对于在过渡期间安排操作特别有用,并且可以按如下方式实现:
Ionic 的标签页导航通过嵌套路由与 Angular Router 集成
来源:仓库概览中的导航和路由系统图
在标签页导航中:
Ionic 完全支持 Angular 的懒加载以优化性能
Angular 路由守卫和解析器与 Ionic 的路由集成无缝协作
Ionic 使用 RouterDirection 概念来确定页面之间导航时的动画方向
| 方向 | 动画 | 用途 |
|---|---|---|
forward(前进) | 从右侧滑入 | 新页面或更深入的导航 |
back(后退) | 从左侧滑入 | 返回上一页 |
root(根) | 无动画(可配置) | 设置新的根页面 |
在使用 NavController 时可以显式设置方向
Ionic Router 集成支持深层链接到应用程序的特定页面,包括嵌套的标签页路由
指向 `/tabs/tab1/details/42` 的深层链接将正确导航到第一个标签页中 ID 为 42 的详细信息页面。
Ionic 的模态系统可以通过辅助路由与 Angular Router 集成
通过遵循这些实践,开发人员可以创建具有流畅、原生般导航体验的应用程序,同时利用 Angular 路由系统的强大功能。
来源:仓库概览中的导航和路由系统图