路由守卫

Angular2提供了2种组件,GuardResolveGuard用来保护一个路径。可以用来判断用户只有在满足一定条件情况下才能打开这个路径对应的页面。Resolve用来在进入某个路径之前先获取数据。

Guard

Guard其实是一系列接口,只要你实现了他的方法,配置了这些Guard,框架就会根据这个方法返回的true和false来判断是否激活这个路由。它包括几种类型:

  • CanActivate:这种类型的Guard用来控制是否允许进入当前的路径。
  • CanActivateChild:这种类型的Guard用来控制是否允许进入当前的路径的所有子路径。
  • CanDeactivate:用来控制是否能离开当前路径进入其他路径。
  • CanLoad:用于控制一个异步加载的子模块是否允许被加载。

Resolve

这跟Angular1中ui-router库的resolve类似,就是用来在打开一个页面之前先获取数据,而不是进入页面以后再加载。这个接口中的方法,可以返回任意的对象,也可以返回一个Promise,或者Observable

如果在一个路径上同时设置了CanActivateResolve,首先CanActivate接口的方法会被执行,当这个路由可以被激活时,Resolve接口的方法才会被执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言 在企业应用中权限、复杂页多路由数据处理、进入与离开路由数据处理这些是非常常见的需求。 当希望用户离开一个正常...
    cipchk阅读 5,673评论 6 23
  • # 1 :重定向路由 {path: '',redirectTo:'home', parthMatch:'full'...
    __凌阅读 701评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,284评论 25 708
  • 进入或者离开路由时需要满足的条件或者进入路由时需要执行什么函数 一 进入时满足的条件现需要写一个类来完成方法的封装...
    马丁路德东阅读 264评论 0 0