2016-04-13 147 views
1

我創建了一個服務來檢查用戶令牌。Angular 2 - 在服務路由

如果令牌未過期,則什麼也不做。如果它已過期 - 將他重定向到登錄頁面。

我Service.ts相關代碼:

checkToken(myError) { 
     if (myError.json().error == "token_expired") 
     { 
      console.log("Your token has expired."); 
      this.router.navigate(['Login']); //Returns error 
     } else { 
      console.log("Do nothing"); 
     } 
    } 

問題

EXCEPTION: TypeError: Cannot read property 'navigate' of undefined 

我Service.ts

import {Component,Injectable} from "angular2/core"; 
import {Router} from 'angular2/router'; 


@Injectable() 

export class JwtService { 
    private jwtToken = localStorage.getItem("jwt"); 

    constructor(public router: Router) 

    getToken() { 
     return this.jwtToken; 
    } 

    checkToken(myError) { 
     if (myError.json().error == "token_expired") 
     { 
      console.log("Your token has expired."); 
      this.router.navigate(['Login']); 
     } else { 
      console.log("Do nothing"); 
     } 
    } 
} 

ROUTER_PROVIDERS是我boot.ts file:

bootstrap(AppComponent, [ 
    JwtService, 
    HTTP_PROVIDERS, 
    ROUTER_PROVIDERS 
]); 

那麼爲什麼我無法從我的服務中導航?

+0

看起來你有'@Injectable()'這是多餘的組件。 –

+0

您將'Router'注入到'AppComponent',但在您的服務中使用它。你是否也向服務注入了'Router'? –

+0

我已經在我的AppComponent中使用了它,但現在我需要在我的服務中使用它。我帖子中的代碼來自我的服務。 – TheUnreal

回答

0
constructor(public router: Router) 

應該

constructor(public router: Router) {} 
+0

嘿謝謝!代碼如下:'@Injectable() @Component({ \t指令:[ROUTER_DIRECTIVES], })',仍然同樣的錯誤出現 – TheUnreal

+0

我沒想到這個解決您的問題,但評論似乎很難與一些代碼行破譯。我需要更多關於您的代碼的信息(請參閱您的問題的評論)。 –