Angular—路由守卫

路由守卫的用处

1. 需要用户登录或拥有某些权限的时候才能进入路由,就可以利用路由做一些限制
2. 用户只有在当前路由填写了满足要求的信息才可以导航到下一个路由的情况。
3. 当用户没有保存,就想离开当前路由的时候,就可以提醒用户。

三种路由守卫

CanAcitivate:处理导航到某路由的情况。
CanDeactivate:处理从当前路由离开的情况。
Resolve:在跳转到指定路由之前,提前获取路由所需的数据。
下面看一下它们的用法:

1. CanAcitivate
(1)首先建立一个文件夹,名为guard,然后在里面建一个 ts 文件,名为login.guard.ts
(2)写一个 LoginGuard 类,让它实现 CanActivate 接口,并实现接口里的方法,在方法中写上限定的条件
在这里插入图片描述
(3)然后需要配置一下路由,就可以了
在这里插入图片描述
2. CanDeactivate
(1)首先也需要建立一个 ts 文件,建立一个类UnsavedGuard,让它实现CanDeactivate接口,不过这个接口需要一个泛型,此泛型就是当前的组件
在这里插入图片描述
(2)路由配置同上

3. Resolve守卫
此守卫的作用是:在进入一个路由之前,先通过该守卫获取到路由所需的数据,获取到数据之后,再向用户展示页面。之所以这样做是因为,有可能在加载数据的过程中有延迟,如果先向用户展示页面,再加载数据,给用户带来的体验不好;还可以解决的一种情况就是,如果因为某些原因获取不到需要的数据,就可以导向错误页等。
(1)先建立一个 Resolve 守卫,让其实现Resolve接口,此接口也需要一个泛型,这个泛型就是获取的数据类型
在这里插入图片描述
(2)配置路由信息
在这里插入图片描述
(3)页面获取守卫返回的数据
在这里插入图片描述
Resolve守卫的过程是:当进入一个路由之前,先通过该守卫获取此路由所需的数据,获取到之后将数据返回,最后由此路由接收守卫获取到的数据。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值