0
我有2個服務(AuthService & AuthRedirectService)角2.服務回報不確定
AuthService使用的Http服務獲取簡單的數據從服務器{"status": 4}
和return response.json().status
< - 數
AuthRediredService執行OnActivate並使用AuthService服務。這是唯一的方法AuthService.GetStatus():數,但它返回undefined
AuthService
GetStatus(): number {
let status: number;
this.http.get(this.host + "/api/auth/")
.subscribe((value: Response) => {
status = value.json().status;
console.log(value.json().status); // write real number 4
});
return status; // 4
}
AuthRedirectService
canActivate() : boolean
{
console.log(this.auth.GetStatus()); // undefined !!!!!!!!
if(this.auth.GetStatus() == StatusCode.Logined)
{
// redirect code
return false;
}
return true;
}
'http.get'是異步的,在解析之前,你已經返回'GetStatus()'。 – silentsod
您可以在這裏查看Gunter的答案:http://stackoverflow.com/questions/38425461/angular2-canactivate-calling-async-function獲取靈感並更深入地瞭解異步canActivate()實現。 – silentsod