Angular5可以激活防护:属性类型可以激活'是不相容的

时间:2018-03-01 06:38:57

标签: javascript angular angular5

我正在尝试在canActivate服务

中实现简单的Auth
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:类   &#39;验证&#39;错误地实现界面&#39; CanActivate&#39;。种类   财产&#39; canActivate&#39;是不相容的。       键入&#39;(下一个:ActivatedRouteSnapshot,状态:ActivatedRouteSnapshot)=&gt;观察到的&#39;不能转让给   type&#39;(route:ActivatedRouteSnapshot,state:RouterStateSnapshot)=&gt;   布尔值|承诺| ...安装前后&#39 ;.         参数类型&#39;状态&#39;并且&#39;州&#39;是不相容的。           输入&#39; RouterStateSnapshot&#39;不能分配到&#39; ActivatedRouteSnapshot&#39;。             财产类型&#39; url&#39;是不相容的。               输入&#39; string&#39;不能分配给&#39; UrlSegment []&#39;。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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