【问题标题】:CanActivate route guard is not getting invokedCanActivate 路由保护没有被调用
【发布时间】:2018-02-22 07:17:37
【问题描述】:

//守护服务

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild } from '@angular/router';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class AuthGuardService implements CanActivate {

  constructor() {
  }
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {
    console.log("can activate called");
    return true;
  }


}


//route
const APP_ROUTES = [{
    path: 'login',
    CanActivate: [AuthGuardService],
    component: login
}

因此,当登录页面加载时,它不会调用可以激活方法和打印控制台。我创建了一个警卫服务并在路由中添加了 CanActivate 属性。

【问题讨论】:

  • 不使用强类型来定义 APP_ROUTES 你是在自取其辱。

标签: angular angular-router angular-router-guards


【解决方案1】:

这是因为您的应用程序路由中 canActivate 中有一个大写 C 字母。 确保您已在 app.module.ts 提供程序数组中注册了您的 AuthGuardService

【讨论】:

  • 编译是可能的,因为canActivateRoute 接口的可选成员,而CanAcivate 在此时被忽略。
  • **facepalm** ...谢谢
猜你喜欢
  • 2017-09-15
  • 2020-02-26
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 2019-08-31
  • 2020-12-28
相关资源
最近更新 更多