首页 文章

Angular5可以激活防护:属性类型'canActivate'不兼容

提问于
浏览
0

我想在我的 Auth 服务中实现简单的 canActivate

import {CanActivate,ActivatedRouteSnapshot} from '@angular/router';
export class Auth implements CanActivate{
    canActivate(
        next: ActivatedRouteSnapshot,
        state: ActivatedRouteSnapshot
      ): Observable<boolean> {

            return Observable.of(true);
      }
}

得到了这个错误

src / app / modules / user / auth.ts(13,14)中的错误:错误TS2420:类'Auth'错误地实现了接口'CanActivate' . 属性'canActivate'的类型是不兼容的 . 类型'(下一个:ActivatedRouteSnapshot,state:ActivatedRouteSnapshot)=> Observable'不能分配给''(路由:ActivatedRouteSnapshot,状态:RouterStateSnapshot)=> boolean |承诺| ...安装前后“ . 参数'state'和'state'的类型是不兼容的 . 类型'RouterStateSnapshot'不能分配给'ActivatedRouteSnapshot'类型 . 属性'url'的类型不兼容 . 类型“字符串”不能指定为“UrlSegment []”类型 .

2 回答

  • 4

    state 的类型更改为 RouterStateSnapshot . 这是编译器唯一抱怨的事情 .

  • 2

    我认为问题是声明状态:应该是RouterStateSnapshot

    interface CanActivate { 
       canActivate(route: ActivatedRouteSnapshot, 
                   state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean
    }
    

相关问题