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. 操作无法完成.键入的打印机名不正确,或者指定的打印机没有连接到服务器上.有关详细信息,请单帮助...
  2. linux批量修改压缩图片大小,linux shell批量压缩某个目录下图片大小
  3. FPGA产生频率可控的正弦波
  4. 文献记录(part47)--KU-HAR: An open dataset for heterogeneous human activity recognition
  5. 洛谷P1912:诗人小G(二分栈、决策单调性)
  6. python中的类怎样理解_理解Python数据类:Dataclass fields 的概述(下)
  7. C 语言传递数组给函数的三种形式
  8. 利用new Object创建对象
  9. [转载] TensorFlow2.0 学习 线性回归
  10. Java Web中界面之间传值的实现方法
  11. 小程序Table样式
  12. 如何用AutoRunner录制IE脚本录制
  13. Linux svn up 遇到Conflict discovered in
  14. 665. Non-decreasing Array
  15. 模型预测控制(MPC)解析(六):有约束的MPC简介
  16. html表格边框美化,CSS美化表格边框汇总与效果
  17. 6U VPX NVME存储板 速度≥10GB/S 最大32TB
  18. 快速排序--QuickSort()--递归版本
  19. 启发式搜索的实现,特性
  20. 聊聊Linux中的线程本地存储(1)——什么是TLS

热门文章

  1. CMD命令提示符窗口中的快捷键、小技巧和常用命令
  2. Byebye Windows,IT业界的最经典的演义史。
  3. 云安全数据备份_确保您的业务数据备份安全的6个技巧
  4. 古老的密码(Ancient Cipher,UVa1339)(算法竞赛入门经典 例题4-1)C++
  5. 【数据结构】前缀树/字典树
  6. AXI smartconnect
  7. 烟雨黑帽SEO程序演示:AI智能模板在线制作制作神器-单域名版+多域名版-一键批量制作黑帽程序所使用的单页模板
  8. 一图了解职能型、项目型和矩阵型组织的优缺点
  9. 树莓派strech版本更新软件源
  10. 零时科技 || Rabby Swap合约遭受攻击事件详解