本文摘自PHP中文网,作者青灯夜游,侵删。
本篇文章带大家一起了解Angular中的路由(Route)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。Angular 路由(Route)
我们可以将路由器理解成控制整个应用状态的视图对象, 每个应用都有一个路由器; 路由器的另一个作用是为每个视图分配唯一的 url, 可以利用这个 url 使应用之间跳转到某一个特定的视图状态。 单页应用其实就是一个视图状态的集合。
相关教程推荐:《angular教程》
单页应用(SPA)
一个单页应用是主页面只加载一次, 不再重复刷新, 只是改变页面部分内容的应用。 Angular 应用就是单页应用, 在 Angular 中使用路由器来实现根据用户的操作来改变页面的内容而不重新加载页面。 单页应用可以理解为一个视图状态的集合。
路由对象
Routes 路由数组
路由器需要先配置才会有路由信息, 并用 RouterModule.forRoot 方法来配置路由器。 当浏览器的 URL 变化时, 路由器会查找对应的 Route(路由), 并据此决定该显示哪个组件。
基础配置:
1 2 3 4 5 6 7 8 9 10 11 |
|
RouterOutlet 路由出口
RouterOutlet 是一个来自路由模块中的指令,它的用法类似于组件。 它扮演一个占位符的角色,用于在模板中标出一个位置,路由器将会把要显示在这个出口处的组件显示在这里。
1 2 |
|
Router 路由器
使用 Router 对象导航。
1 2 3 4 5 6 |
|
RouterLink 路由器链接
路由链接 url 必须以 ‘/’ 开头。
1 2 3 |
|
ActivatedRoute 激活的路由
当前激活的路由的路径和参数可以通过 ActivateRoute 的路由服务来获取。
- 常用属性:
属性 说明 url 路由路径的 Observable 对象,是一个由路由路径中的各个部分组成的字符串数组. data 一个 Observable,其中包含提供给路由的 data 对象。也包含由解析守卫(resolve guard)解析而来的值。 paramMap 一个 Observable,其中包含一个由当前路由的必要参数和可选参数组成的 map 对象。用这个 map 可以获取来自同名参数的单一值或多重值。 queryParamMap 一个 Observable,其中包含一个对所有路由都有效的查询参数组成的 map 对象。 用这个 map 可以获取来自查询参数的单一值或多重值。
在路由时传递数据
- 在查询参数中传递数据
/common/b?id=1&name=2 => ActivatedRoute.queryParamMap
- 在路由路径中传递数据
{path: /common/b/:id} => /commo/b/1 => ActivatedRoute.paramMap
- 在路由配置中传递数据
{path: /common/b, component: BComponent, data: {id:“1”, title: “b”}}
- 示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
snapshot
: 参数快照,是一个路由信息的静态快照,抓取自组件刚刚创建完毕之后,不会监听路由信息的变化。如果确定一个组件不会从自身路由到自身的话,可以使用参数快照。
subscribe
: 参数订阅,相当于一个监听器,会监听路由信息的变化。
重定向路由
在用户访问一个特定的地址时,将其重定向到另一个指定的地址。
配置重定向路由:
1 2 3 4 5 |
|
子路由
子路由配置语法:
1 2 3 4 5 6 7 8 9 10 |
|
辅助路由
辅助路由又兄弟路由,配置语法:
1 2 3 4 5 6 7 8 9 10 |
|
当点击Xxx链接时,主插座会显示’/home’链接所对应的组件,而xxxlet插座会显示xxx对应的组件。
路由守卫(guard)
CanActivate/CanActiveChild:处理导航到某路由的情况
当用户不满足这个守卫的要求时就不能到达指定路由。
1 2 3 4 5 6 7 |
|
CanDeactivate:处理从当前路由离开的情况
如果不满足这个守卫的要求就不能离开该路由。
1 2 3 4 5 6 7 |
|
Resolve:在路由激活之前获取路由数据
在进入路由时就可以立刻把数据呈现给用户。
1 2 3 4 5 6 7 |
|
最后,需要将路由守卫添加到路由配置中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
更多编程相关知识,请访问:编程入门!!
以上就是详解Angular中的Route路由的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
聊聊Angular指令中的prelink和postlink函数
Angular cli如果搭建Angular+typescript+material项目?
浅谈Angular如何借助第三方组件和懒加载技术进行性能优化
10个关于路由vue-router的vuejs面试题(含答案解析)
更多相关阅读请进入《Angular》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者