1

角度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

あなたのトークンが存在する場合、エラーメッセージを表示他、チェックするためにif文を使用することができます:あなたの応答のための

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'から壊します。フォローアップの質問は、ルートを変更する前に 'subscribe'メソッドでトークンをチェックする最良の方法です。 – Bob

関連する問題