2016-04-13 19 views
1

Ich habe einen Dienst erstellt, um nach Benutzer-Token zu suchen.Angular 2 - Routing im Dienst

Wenn das Token nicht abgelaufen ist, nichts tun. Wenn es abgelaufen ist, leiten Sie ihn auf die Anmeldeseite um.

Mein Service.ts entsprechenden Code:

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"); 
     } 
    } 

Das Problem

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

Mein 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"); 
     } 
    } 
} 

Mein ROUTER_PROVIDERS in meinemistDatei:

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

Warum kann ich dann nicht von meinem Dienst aus navigieren?

+0

sein Sieht aus wie Sie '@Injectable haben()' auf der Komponente, die redundant ist. –

+0

Sie injizieren den 'Router' in' AppComponent', verwenden ihn jedoch in Ihrem Dienst. Haben Sie den 'Router' auch in den Dienst injiziert? –

+0

Ich benutze es bereits in meiner 'AppComponent', aber jetzt muss ich es auch in meinem Dienst verwenden. Der Code in meinem Beitrag stammt von meinem Dienst. – TheUnreal

Antwort

0
constructor(public router: Router) 

sollte

constructor(public router: Router) {} 
+0

Hey danke!, aber ich änderte meine Code dazu: '@Injectable() @Component ({ \t Richtlinien: [ROUTER_DIRECTIVES], }) 'und noch derselbe Fehler erscheint – TheUnreal

+0

Ich habe nicht erwartet, das Ihr Problem zu lösen, aber ein Kommentar schien zu hart mit einigen Zeilen Code zu entschlüsseln. Ich benötige weitere Informationen über Ihren Code (siehe Kommentar zu Ihrer Frage). –