我創建了一個服務來檢查用戶令牌。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
]);
那麼爲什麼我無法從我的服務中導航?
看起來你有'@Injectable()'這是多餘的組件。 –
您將'Router'注入到'AppComponent',但在您的服務中使用它。你是否也向服務注入了'Router'? –
我已經在我的AppComponent中使用了它,但現在我需要在我的服務中使用它。我帖子中的代碼來自我的服務。 – TheUnreal