看个具体的例子。

const CUSTOM_ROUTES: Routes = [{ path: "custom/:id", component: RouteDemoComponent,data:{ name: 'jerry'},canActivate: [CanActivateTeam] }
];

canActivate的类型是数组,而不是单个元素。

在app.module.ts的providers里,导入CanActivateTeam:

canActivateTeam的实现:

@Injectable()
export class CanActivateTeam implements CanActivate {constructor(private permissions: JerryPermissions, private currentUser: UserToken) {}canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree {return this.permissions.canActivate(this.currentUser, route.params.id);}
}

permissions的实现:

export class UserToken {}
export class JerryPermissions {canActivate(user: UserToken, id: string): boolean {console.log('Jerry');return true;}
}

运行时数据:

大部分字段的值都是从Route interface里带过来的。

使用依赖注入获得CanActivateTeam的实例:

根据token,对实例进行hydrate:

record里包含了Component 工厂:

依赖注入完成:

更多Jerry的原创文章,尽在:“汪子熙”:

Angular路由里的canActivate用法相关推荐

  1. angular路由详解

    angular路由 路由 (route) ,几乎所有的 MVC(VM) 框架都应该具有的特性,因为它是前端构建单页面应用 (SPA) 必不可少的组成部分. 那么,对于 angular 而言,它自然也有 ...

  2. Angular 路由

    Angular 路由 简单路由配置 每个带路由的 Angular 应用都有一个Router(路由器)服务的单例对象. 当浏览器的 URL 变化时,路由器会查找对应的 Route(路由),并据此决定该显 ...

  3. angular路由移除#号(跟nginx)

    刚进公司,公司使用的angular.js(1.3.0),主管跟我说要我移除angular项目访问路径URL里的#号移除(针对百度seo问题后来发现angular天生不适合做seo). angularj ...

  4. Angular 路由的wild匹配

    我如果在Angular Component里输入一个并不存在path配置的url,会遇到如下错误消息: ERROR Error: Uncaught (in promise): Error: Canno ...

  5. Angular 路由守卫

    1. 路由 Angular路由: 可以控制页面跳转:可以在多视图间切换: 2. 路由守卫 Angular路由守卫: 在进入或离开某路由时,用于判断是否可以离开.进入某路由::: return true ...

  6. Angular 项目里 angular.json 文件内容的学习笔记

    看一个基于 Angular 的 SAP Spartacus 项目里 angular.json 的例子: version: The configuration-file version. newProj ...

  7. Angular应用里setTimeout被如何被monkey patched的

    monkey patched: monkey patch指的是在运行时动态替换,一般是在startup的时候. 下面的测试代码可以让我们弄清楚,浏览器支持的原生函数setTimeout,是如何在Ang ...

  8. Angular应用里的tsconfig.app.json

    tsconfig.app.json是tsconfig.json的扩展: 在应用工程文件angular.json里的tsConfig字段处被引用: ng build后的输出: 2020年10月4日国庆节 ...

  9. Angular应用里的Template Reference变量

    Angular应用里的Template Reference Variable,模板引用变量,用于创建一个对模板里DOM元素或者Angular指令的引用. 使用#号定义一个模板引用变量. 看个具体的例子 ...

最新文章

  1. 1、使用库函数计算两个向量的夹角
  2. Yii2.0 limit(1)与one()
  3. node 生成随机头像_微信头像新玩法?二次元头像自己捏,每款都独一无二
  4. 复合消隐信号的作用_南大《AFM》:可拉缩、粘合、导电的双信号柔性彩色薄膜...
  5. android xml黑体字_如何在 Android 上使用思源黑体作为系统字体?
  6. 如何在六个月或更短的时间内成为DevOps工程师(一)
  7. 这款应用,让Windows软件也能在Mac上使用起来
  8. 季节性ARIMA模型【R语言】
  9. 2023年太原理工大学水利工程考研考情与难度、参考书前辈备考经验
  10. 【Sentry使用】自定义transaction
  11. css动画旋转加平移实现3D图片墙
  12. 虚拟机安装kali linux
  13. Lora1278驱动V4.4.2讲解二:驱动多个SX1278芯片
  14. 【小y设计】二维码条形码打印编辑器
  15. 可以测试成果的背单词软件,实测背单词最好的软件排名,选了4款最管用的单词软件送给你!...
  16. 标准正态分布alpha分位点
  17. Data Structures in C++:八大基本数据结构概述
  18. CISSP-D2-资产安全
  19. 华为ensp搭建习题
  20. 2021大厂Java面试真题(一)

热门文章

  1. Prometheus Querying Function rate() vs irate()
  2. Oracle_零度笔记
  3. 轻量级的Ajax解决方案——DynAjax:直接在客户端调用C#类的方法
  4. linux7.3安装oracle12c release2
  5. fir.im Weekly - 2017 年必须了解的 iOS 开源库
  6. 解决VS2012 Express的There was a problem sending the command to the program问题
  7. 艾伟:ASP.NET实用技巧(一)
  8. .NET建议使用的大小写命名原则
  9. 方立勋_30天掌握JavaWeb_Servlet Filter(过滤器)未完
  10. 关闭Mycelipse的拼写检查