angular2系统学习 - 路由与导航(4)

1.路由守卫

路由守卫其实就是一种拦截机制,在进入离开视图等时的拦截行为。
路由守卫可以看作是挂在路由上连接视图组件的拦截器,在进入、离开视图等事件监听上触发拦截。
我们可以把每一个路由看成一个中间块,一边连接视图,一边连接守卫。
路由器支持多种守卫:

  • 用CanActivate来处理导航到某路由的情况。
  • 用CanActivateChild处理导航到子路由的情况。
  • 用CanDeactivate来处理从当前路由离开的情况。
  • 用Resolve在路由激活之前获取路由数据。
  • 用CanLoad来处理异步导航到某特性模块的情况。

当触发守卫时内部返回true,则继续运行;返回false则停止导航。常用于权限控制。

守卫还可以告诉路由器导航到别处。

2.如何配置守卫?

这里先说下如何创建一个守卫;

2.1首先创建一个守卫服务,用Injectable装饰器装饰的类,我们需要哪种守卫,就在创建的守卫服务类后继承那种服务的接口

    export class GuardService implements CanActivate { }
继承接口以后,我们就要实现这个接口,将接口开头字母小写就是实现方法名。canActivate(),方法返回布尔值,表示是否继续导航。
实现守卫方法内的参数一般只有两个:
route: ActivatedRouteSnapshot  //包含了即将被激活的路由。
state: RouterStateSnapshot        //包含了该应用即将到达的状态。
import { Injectable } from '@angular/core';
import { CanActivate, //守卫,处理导航到某路由的情况。Router,ActivatedRouteSnapshot,  //RouterStateSnapshot, //CanActivateChild //守卫,处理导航到子路由的情况} from '@angular/router';@Injectable()
export class Guard implements CanActivate{canActivate( route: ActivatedRouteSnapshot , state: RouterStateSnapshot){if(boolean) return true;else return false;}
}

到这里守卫服务就已经创建好了。

2.2将守卫挂接到路由。

在routing.module中,将守卫服务配置到路由数组中。

{path: '',component:ParAComponent,canActivate:[ GuardService ]
}

每个守卫在路由数组中都有相应的属性名。
一个路由项可以挂接多个路由守卫
在这里可以看到,ng2以路由为中心,将视图组件、守卫都捆绑到了路由数组中。

当路由导航至ParAComponent中时,会先进入守卫的实现方法中,如果方法返回true,则继续往下走;如果返回false,则不进入这个视图。

angular2系统学习 - 路由与导航(4)相关推荐

  1. angular2系统学习 - 路由与导航(2)

    angular2系统学习 - 路由与导航(2) 1.模块注册路由 NgModule注册路由分根模块(AppModule)与子模块注册路由,只有根模块AppModule才能使用forRoot()方法. ...

  2. Vue.js实战之系统学习第七节

    想看上一节的请点击: Vue.js实战之系统学习第六节 接下来我们要学习第七节了,时间过的好快. 组件详解 组件是Vue.js的核心功能,也是整个框架设计最精彩的地方,当然也是最难掌握的.本章节将带你 ...

  3. React系统学习笔记

    ***当前阶段的笔记 *** 「面向实习生阶段」https://www.aliyundrive.com/s/VTME123M4T9 提取码: 8s6v 点击链接保存,或者复制本段内容,打开「阿里云盘」 ...

  4. Blazor 路由及导航开发指南

    翻译自 Waqas Anwar 2021年4月2日的文章 <A Developer's Guide To Blazor Routing and Navigation> [1] 检查传入的请 ...

  5. linux中ftp的工作原理,Linux系统学习 十二、VSFTP服务—简介与原理

    1.简介与原理 互联网诞生之初就存在三大服务:WWW.FTP.邮件 FTP主要针对企业级,可以设置权限,对不同等级的资料针对不同权限人员显示. 但是像网盘这样的基本没有权限划分. 简介: FTP(Fi ...

  6. 前端系统学习篇之HTML

    前言 该分类目的是系统学习前端知识做的笔记,HTML5+CSS3+JavaScript+Jquery+vue+前端工程化等等,使自己成为一个全栈工程师,学完水平能达初级前端开发工程师以上. HTML简 ...

  7. Flutter之路由与导航

    先放效果,瞎写一通,不过我发现自己挺享受自己创作设计的过程的,真的废寝忘食hhh 贴代码 //main.dartimport 'package:flutter/material.dart'; impo ...

  8. 云计算具有哪些优势 如何快速系统学习云计算

    云计算具有哪些优势?如何快速系统学习云计算?近年来,云计算发展迅猛,同时随着大数据.人工智能等研究的不断深入,云计算作为其重要技术和支撑,未来仍会有巨大的发展空间.下面一同来看看吧. 云计算是一种按使 ...

  9. Linux 功能强大的 路由器,一款功能强大的路由器系统-软路由-RouterOS

    推荐一款路由器系统,头条有很多喜欢使用软路由伙伴可能有很多都不知道RouterOS这个路由系统是,RouterOS 是 由拉脱维亚MikroTik 司开发的一 种基于linux 内核的路由操作系统.有 ...

最新文章

  1. qt向服务器传输文字_Qt 模拟 HTTP 表单提交文字或文件到服务器
  2. 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
  3. 谷歌go语言课程讲解资源
  4. boost::statechart模块实现无效转换测试
  5. 递归删除指定目录下的指定类型文件和目录
  6. android ros 节点编写_嵌入式的我们为什么要学ROS
  7. 哥德巴赫猜想(升级版)(洛谷-P1579)
  8. 服务器上的文件如何查看,如何查看远程服务器上的文件
  9. 弦图(Echarts)
  10. ESP8266串口WiFi模块基本使用方法和配置教程
  11. segue跳转_使用SwiftUI的Segue Shenanigans
  12. 吴恩达深度学习作业之deepleraning_L1W2_h2
  13. 手机群控软件免root
  14. CIsco思科三层交换配置DHCP,客户端动态获取
  15. 如何解决后台传回的数据不是正常的json数据,例如是个List [ ]
  16. 公司域名到期时间查询
  17. 程序人生-我已经努力了七年
  18. DeviceNet技术及其产品开发
  19. No.032<软考>《(高项)备考大全》【第16章】项目变更管理
  20. 索引失效的10个原因

热门文章

  1. 不给糖果就捣乱,用Python绘制有趣的万圣节南瓜怪
  2. Swift 中的SDWebImage类似库Kingfisher
  3. Tampermonkey(油猴子)插件安装、使用
  4. ucore_lab6实验报告
  5. JavaGuide github 地址及中文学习文档
  6. Py区块链源码笔记 (1)挖矿
  7. 单片机毕业设计 stm32指纹识别考勤系统 - 嵌入式 物联网
  8. gps ins matlab,GPS和INS联合导航matlab程序(带数据有用的)
  9. 高等数学 导数与微分 知识技巧思维导图 [21考研上岸之旅]
  10. GPT:Generative Pre-Training