路由守卫

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

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

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

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

新建一个文件PermissionGuard.ts

import {CanActivate,

ActivatedRouteSnapshot,
RouterStateSnapshot

} from '@angular/router';

 
export class PermissionGuard   implements CanActivate{
 
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):boolean{
  
  return false;
  }
}
 
在路由配置中配置
import { PermissionGuard   } from './../PermissionGuard';
const routes: Routes = [
  {
  path:'message',
  component: MessageComponent,
  canActivate:[PermissionGuard],
  children:[
  {
  path:'messgeMenu',
  component: MessageMenuComponent,
  children:[
  {
  path:'list',
  component: MessageListComponent
  },{
  path:'',
  component: MessageDetailComponent
  }
  ]
}
]
}
]
 
在对应的Xxxmodule.ts文件中导入
import { PermissionGuard   } from './../PermissionGuard';
providers:[PermissionGuard]
 
2.CanDeactivate:处理从当前路由离开的情况
 
新建一个文件focusGuard.ts
import { CanDeactivate } from "@angular/router";
import { XxxComponent } from ''./../xxxComponent";
 
export class FocusGuard  implements CanDeactivate <XxxComponent > {
 
  canDeactivate(component: XxxComponent ){
  
    if (component.isFoucs()){
    return true;
    }else {
    return false;
    }  
  }
}
 
在路由配置中配置
import { FocusGuard  } from './../PermissionGuard';
 
canDeactivate:[FocusGuard ],
 
在对应的Xxxmodule.ts文件中导入
import { FocusGuard  } from './../focusGuard';
//其实在实例化对象
providers:[FocusGuard]
 
 3.Resole:在路由激活之前获取路由数据
 
新建一个stock-resole.service.ts文件
 
import { Injectable } from '@angular/core';
import {
Resolve,
ActivatedRouteSnapshot,
RouterStateSnapshot
} from '@angular/router';
//导入股票数据模块
import { Stock } from './stock';
 
import { Observable } from 'rxjs/Observable';
@Injectable()
export class StockResolveService implements Resolve<Stock>{
  resolve(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): Stock | Observable<Stock> | Promise<Stock>{
    console.log(new Stock(1,"IBM"));
 
    return new Stock(1,"IBM");
  }
}
 
在xxx.module.ts文件中注入
 
import { StockResolveService } from './../stock-resolve.service';
 
providers:[StockResolveService]
 

在路由中配置

import { StockResolveService } from './../stock-resolve.service';
const mineRoutes: Routes = [
{
path:'mine',
component: MineComponent,
children: [
 
{path:'mineMenu',component: MineMenuComponent},
{path:'mineList', component: MineListComponent} 
],
resolve:{
stock: StockResolveService
}
}

angular路由详解六(路由守卫)的更多相关文章

  1. react router @4 和 vue路由 详解(六)vue怎么通过路由传参?

    完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 8.vue怎么通过路由传参? a.通配符传参数 //在定义路由的时候 { path: ' ...

  2. Ocelot简易教程(三)之主要特性及路由详解

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9664977.html 上篇<Ocelot简易教程(二)之快速开始2>教大家如何快速跑起来一个 ...

  3. Vue 路由详解

    Vue 路由详解 对于前端来说,其实浏览器配合超级连接就很好的实现了路由功能.但是对于单页面应用来说,浏览器和超级连接的跳转方式已经不能适用,所以各大框架纷纷给出了单页面应用的解决路由跳转的方案. V ...

  4. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...

  5. Express的路由详解

    Express的路由详解 http://www.jb51.net/article/76203.htm

  6. [转载]Ocelot简易教程(三)之主要特性及路由详解

    上篇<Ocelot简易教程(二)之快速开始2>教大家如何快速跑起来一个ocelot实例项目,也只是简单的对Ocelot进行了配置,这篇文章会给大家详细的介绍一下Ocelot的配置信息.希望 ...

  7. Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...

  8. 详解vue 路由跳转四种方式 (带参数)

    详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 ...

  9. iOS路由详解

    本文如题,路由详解,注定是一篇详细解释iOS路由原理及使用的文章,由于此时正在外地出差,无法详细一一写出,只能不定时的补充. 一.什么是iOS路由 路由一词来源于路由器,可以实现层级之间消息转发的功能 ...

随机推荐

  1. 应用负载均衡之LVS(三):使用ipvsadm以及详细分析VS/DR模式

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. Python基础——条件判断

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 到目前为止,Python基础系列的文章中的程序都是一条一条语句顺序执行的.在本章中,我会重点介绍让程序选择是否执行语 ...

  3. HashMap、Hashtable、 LinkedHashMap、TreeMap四者之分。

    java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HasMap.Hashtable.LinkedHasmap和TreeMap. (1)HashMa ...

  4. 自动化测试工具selenium的使用

    1.自动化测试的前提

  5. CentOS 挂载 cdrom, iso文件作为源

    在生产系统环境中的机器都没有连接互联网,因此都是使用本地源. 首先,需要将cdrom, 或 iso文件挂载到本地目录. 1.挂载光驱: 将cdrom 放入光驱. $  mkdir /media/cdr ...

  6. MVC5中使用Log4Net

    最早搜到的是这篇: http://www.codeproject.com/Articles/823247/How-to-use-Apache-log-net-library-with-ASP-NET- ...

  7. dubbo filter实现接口认证springboot idea

    最近公司有业务需求,要对Dubbo接口调用者进行身份验证,验证通过才能调用,网上一些资料不够全面,遂整理了一下. 在provider方定义一个filter,需要实现com.alibaba.dubbo. ...

  8. springMvc学习笔记一

    什么是springmvc  springmvc就是spring框架的一个模块 所以springmvc与spring之间无需通过中间整合层进行整合的. springmvc又是基于mvc的web框架 mv ...

  9. Activiti获取ProcessEngine的三种方法

    1.通过ProcessEngineConfiguration获取 package cn.lonecloud.mavenActivi; import org.activiti.engine.Proces ...

  10. 对于 @Autowired注解和@service注解的理解

    @Autowired相当于Spring自动给你进行了new一个对象将这个对象放入你的注解所在类里面. @service 是可以让IOC容器对于你注解的类可以在容器中生成相应的bean实例 便于我们进行 ...