2016-09-19 65 views
0
CanActivate后卫

我想实现我的服务“CanActivate”的方法,而下方则是 服务代码如何实现Angular2

import { Injectable } from '@angular/core'; 
import { CanActivate } from '@angular/router'; 

@Injectable() 
export class GuardUserSearchService implements CanActivate { 

    CanActivate() { 
     console.log('dummy guard clause for User search'); 
     return true; 
    } 
} 

当我编译这个打字稿代码,它是以下错误

显示器

'GuardUserSearchService'类错误地实现了'CanActivate'接口。

任何想法在我的代码中有什么问题。

回答

6

你的服务必须实现这个功能,全面落实CanActivate接口:

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

记住该接口的名称是CanActivate(大写C),而方法的名字是canActive(小写c)。

+0

即使修改后,它显示了同样的错误。我的angular2版本是RC-6。 – refactor

+4

请检查大小写。该函数应该是'canActivate',而不是'CanActivate' –

+0

lol..i也在canActivate函数中执行upperCase'C'的同样的错误。 –

1

按照the documentation,界面看起来是这样的:

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

所以,你的执行缺少的参数:

export class GuardUserSearchService implements CanActivate { 
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
     console.log('dummy guard clause for User search'); 
     return true; 
    } 
}