angular 路由守卫

栏目: 编程语言 · AngularJS · 发布时间: 5年前

路由守卫基础

路由守卫作用:
    用于在导航到目标组件之前进行验证, 符合条件才会导航到目标组件。
路由检查的顺序:
    路由器会先按照从最深的子路由由下往上检查的顺序来检查 CanDeactivate() 和 CanActivateChild() 守卫。
  然后它会按照从上到下的顺序检查 CanActivate() 守卫。 如果特性模块是异步加载的,在加载它之前还会检查 CanLoad() 守卫。
  如果任何一个守卫返回 false,其它尚未完成的守卫会被取消,整个导航就被取消。
  
惰性加载:
    1. 只在用户请求时才加载。惰性加载和重新配置工作只会发生一次,也就是在该路由首次被请求时。在后续的请求中,该模块和路由都是立即可用的。
    2. 必须在启动时加载的模块,其他模块都应该惰性加载。
预加载:
    1. 根据预加载策略,在每次成功的导航后,路由器会在自己的配置中查找尚未加载并且可以预加载的模块进行加载。
    2. 当前不需要但是随后马上就需要的模块应该预加载

(守卫接口)Guard interfaces

  1. CanActivate 和 CanActivateChild

    CanActivate:处理导航到某路由的情况。

    CanActivateChild:处理导航到某子路由的情况。

    使用方法:

    const adminRoutes: Routes = [
         {
           path: '',
           component: AdminComponent,
           canActivate: [AuthGuard],//AuthGuard验证通过,才允许访问Admin页面
           children: [
             {
               path: '',
               canActivateChild: [AuthGuard],//AuthGuard验证通过,才允许访问Admin页面的子页面
               children: [
                 { path: 'crises', component: ManageCrisesComponent },
                 { path: 'heroes', component: ManageHeroesComponent },
                 { path: '', component: AdminDashboardComponent }
               ]
             }
           ]
         }
       ];

    应用示例:要求认证

    angular 路由守卫

    工作流程:

    angular 路由守卫

  2. CanDeactivate 和 Resolve

    CanDeactivate:处理从当前路由离开的情况。

    Resolve:在路由激活之前获取路由数据

    使用方法:

    const crisisCenterRoutes: Routes = [
         {
           path: '',
           component: CrisisCenterComponent,
           children: [
             {
               path: '',
               component: CrisisListComponent,
               children: [
                 {
                   path: ':id',
                   component: CrisisDetailComponent,
                   canDeactivate: [CanDeactivateGuard],  // CanDeactivate:处理从CrisisDetailComponent路由离开的情况
                   resolve: { //resolve:当所有必要数据都已经拿到之后,预先加载CrisisDetailComponent的路由数据
                     crisis: CrisisDetailResolverService 
                   }
                 },
                 {
                   path: '',
                   component: CrisisCenterHomeComponent
                 }
               ]
             }
           ]
         }
       ];

    应用示例:用户尝试不保存或撤销更改就导航到外面。

    angular 路由守卫

    工作流程:

    angular 路由守卫

  3. CanLoad

    CanLoad:处理异步导航到某特性模块的情况。
       使用方法:
           const appRoutes: Routes = [
             {
               path: 'compose',
               component: ComposeMessageComponent,
               outlet: 'popup'
             },
             {
               path: 'admin',
               loadChildren: './admin/admin.module#AdminModule',
               canLoad: [AuthGuard]//保护对特性模块的未授权加载,只有在用户已登录的情况下才加载 AdminModule
             },
             {
               path: 'crisis-center',
               loadChildren: './crisis-center/crisis-center.module#CrisisCenterModule',
               data: { preload: true }
             },
             { path: '',   redirectTo: '/superheroes', pathMatch: 'full' },
             { path: '**', component: PageNotFoundComponent }
           ];

以上所述就是小编给大家介绍的《angular 路由守卫》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

重来2

重来2

[美] 贾森·弗里德、[美] 戴维·海涅迈尔·汉森 / 苏西 / 中信出版社 / 2014-4-8 / 39.00元

“不再需要办公室”,这不仅仅是未来才有的事——它已经发生了。现在,轮到你迈开脚步,跟上时代的步伐了。 上百万的员工和成千上万的企业已经发现了远程工作的乐趣和好处。然而,远程工作方式还没有成为常见的选择。事实上,远程工作的技术手段都已齐备。还没有升级换代的,是人们的思想。 这本书的目的就是帮你把想法升级换代。作者会向你展示远程工作的诸多好处:可以找到最优秀的人才,从摧残灵魂的通勤路上解脱......一起来看看 《重来2》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具