路由守卫

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. ubuntu下boost编译安装

    ubuntu下boost编译安装 boost 安装 1.依赖安装 apt-get install mpi-default-dev libicu-dev python-dev python3-dev l ...

  2. @Scope注解

    @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE)这个是说在每次注入的时候回自动创建一个新的bean实例 @Scope(value=Config ...

  3. CentOS 6安装Oracle报错解决方案

    1. Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-05-23_04-18-48AM. Please ...

  4. python实现三级菜单

    一.要求: 1.一开始打印出所有省份和提示 2.用户输入省份以此查询城市 3.在按照输出的城市名提示用户输入,最后输出用户所查询的区县名 4.随时输入"back"可以返回上一级菜单 ...

  5. LNMP搭建环境遇到的N多坑

    最近配置开发用的lnmp环境,环境配置完成后,爆500错误,查看nginx错误日志 open_basedir 将 PHP 所能打开的文件限制在指定的目录树,包括文件本身 错误日志显示,访问脚本不在 o ...

  6. Java集合框架(六)—— Collections工具类

    操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集 ...

  7. Java集合框架(五)—— Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap

    Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的ke ...

  8. HDP2.0测试

    1.测试Hbase (1)hive导入hbase

  9. 内存映射mmap的几个api及其使用

    内存映射 mmap 内存映射mmap函数的作用是建立一段可以被两个或者多个程度读写的内存段,一个程序对他进行任何修改,对其它程序可见.同样,这个功能可以用在对文件的处理上,mmap函数创建一个指向一个 ...

  10. 二、Mysql(二)

    原文参考:http://www.cnblogs.com/wupeiqi/articles/5713323.html 还有一个是课件,看着也像博客,但不知道是谁的 内置函数 触发器 存储过程 索引 与p ...