2017-02-21 21 views
0

ログインに成功した後にユーザーをリダイレクトしようとしています。ログイン後に角2がリダイレクトされない

login(event) { 

event.preventDefault(); 

this.error = ''; 
this.loading = true; 

this.authenticationService.login(this.user.email, this.user.password) 
    .subscribe(result => { 

     if (!result) { 
     this.loginError(); 
     return; 
     } 

     this.loginSuccess(); 

    }, 
    err => { 
     this.loginError(); 
    }); 

} 

authenticationService.login()メソッドはHTTP POSTを行います。 LOGINSUCCESS()メソッドは、このいずれかになります。

private loginSuccess() { 
     this.router.navigate(['/app/dashboard']); 
} 

この問題は、私は再度ログインしようとした場合、それはリダイレクト一度非同期メソッドと関連する何かようです。しかし、私が知る限り、router.navigateは要求が返った後にだけ呼び出されます。

router.navigate()はZoneAwarePromisseオブジェクトを返します。それが成功したオブジェクトがどのように見えるリダイレクトする場合:

__zone_symbol__state:true 
__zone_symbol__value:false 
+0

(1)ブラウザの開発環境のネットワークトラフィックタブでサーバーの応答を調べてみましたか? (2)a)成功関数が毎回呼び出され、b)すべてのインスタンスで結果オブジェクトが正しく構成されていること、およびc)エラー関数が実行されていないことを検証するためにconsole.log()ステートメントを挿入しましたか?私はあなたがこれを解決するのを助けることに非常に興味があります、私に上記を知らせてください。 –

答えて

1

あなたのページには、時々リダイレクトしてことがある私に大きな興味のないことを:

__zone_symbol__state:true 
__zone_symbol__value:true 

しかし失敗1は次のようになります。時々リダイレクトされるので、表示されたコードは正しいとみなされ、問題はauthenticationServiceにあるとみなすことができます。

コンソールログを使用して、結果と表示される順序を慎重に検査します。次のような行を追加してください:console.log('initializing login request')console.log('success function called with result object', result)console.log('inside success function with \'this\' object, this)console.log('error function called with error', error)

これは、表示されている変数の値を確認するのに役立ちます。さらに重要なことに、関数が全く実行されていないときも表示できます。これらのインスタンスをより徹底的に調べます。

これは、ブラウザの開発コンソールの[ネットワーク]タブを確認していることを確認してください。送信しているメッセージを見て、正しい形式になっていることを確認してください。レスポンスを見てください。応答が戻ってきましたか?それはうまくフォーマットされましたか?解析エラーがありますか?これらは通常、私のコードが失敗するポイントです。

私のコードでは、失敗したサーバーレスポンス(応答がまったくありません)またはフォーマットが間違っていることがよくあります。サーバーがJSONにエラーテキストを追加することがあり、JSONが解析不能になることがあります。これは私にサーバー側のコードのエラーを発見する理由を与え、すべてを修正します。または、Webサーバーの設定をチェックして、サーバーが失敗していないこと、またはパケットが正しく受信および処理されていることを確認する理由がわかります。

私はあなたの状況についてより詳しく知るように、この回答を更新します。がんばろう!

+1

authenticationServiceもHTTP要求を行い、それが問題でした。ありがとう! – fred00

+0

問題ありません!それはこのコミュニティがここにあるものです:) –

関連する問題