2016-09-19 64 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; 
    } 
}