1

試圖找出與Angular 2的一些基本認證。我希望我的組件檢查令牌,如果它存在導航到正確的位置,但如果它不顯示返回的錯誤消息服務。下面是該服務電話:訪問令牌和響應數據

this._loginService.login(loginQuery) 
     .subscribe(
      (token: any) => this._router.navigate(['User', { username: user }]), 
      (data) => { this.errorMessage = data.ErrorMessage; } 
     ) 

下面是服務的代碼:

return this._http.post('serivcelink, 
          body, 
          {headers:headers}) 
     .map((res : any) => { 
      let data = res.json(); 
      this.token = data.TeamMember.UserName; 
      localStorage.setItem('token', this.token); 
     }); 

我得到令牌的行爲我想,除了我沒有在得到響應對象訪問組件,因此無法顯示錯誤消息。

如何檢查令牌並獲取響應數據?

回答

0

您可以使用,如果檢查語句,如果你的令牌存在,否則顯示一條錯誤消息:

this._loginService.login(loginQuery) 
     .subscribe(
      (data: any) => { 
       if (localStorage.getItem('token')) { 
        this._router.navigate(['User', { username: user }]) 
       } else { 
        this.errorMessage = data.ErrorMessage; 
       } 
      } 
     ) 
+0

謝謝,這就是我一直在尋找的東西。我不確定語法。 – Bob

0

你需要在你的情況map回調中返回的東西,即this.token

return this._http.post('serivcelink, 
         body, 
         {headers:headers}) 
    .map((res : any) => { 
     let data = res.json(); 
     this.token = data.TeamMember.UserName; 
     localStorage.setItem('token', this.token); 
     return this.token; // <------- 
    }); 

你什麼樣的回報將收到的參數爲subscribe方法的回調。

+0

感謝您的答覆。這允許我返回響應,但是打破了我想從我的'訂閱'中得到的行爲。接下來的問題是在更改路由之前檢查'subscribe'方法中的令牌的最佳方法是什麼? – Bob