2017-06-13 5 views
0

私はAngular 2アプリケーションを構築しています.2番目のパラメータとして別のルートを使用してユーザーをログインルートに移動すると、そのルートにユーザーがリダイレクトされるように設定されていますログイン。角2現在のルートパスにアクセスする方法

たとえば、ユーザーは経路/カスタマーに移動しようとしますが、ログインは有効期限切れです。ガードを使用して/ login/customerにリダイレクトし、ログインして/ customerにリダイレクトします。これは私の警備員とうまく動作しますが、コンポーネントで使用しようとすると問題が発生します。

問題は、コンポーネント内で現在のパスを取得できないようです。

私はActivatedRouteと両方とも空の文字列を返します。

シナリオ:ユーザーは/ customerルート上にあり、クリックすると新しい顧客が追加されます。 APIは、期限切れのトークンで要求が行われたことを示すエラーを返します。上記のようにrouter.navigateに電話する必要があります。つまり、現在のルート(/ customer)を決定してナビゲーションに含める必要があります。

constructor(
    private activatedRoute: ActivatedRoute, 
    private authService: AuthService, 
    private router: Router; 
) { } 

private addCustomer(customer): void { 
    return this.authService.post(API.CUSTOMER, customer) 
    .mergeMap(...) 
    .catch(error => { 
     this.router.navigate(['/login', this.activatedRoute.snapshot.url[0].path]); // This is very simple and I like it but url is always an empty array. 
     return this.activatedRoute.url 
     .map(segments => { 
      this.router.navigate(['/login', segments.join('')]); // I just get and empty string from this. 
     }); 
    }); 
} 
+0

この回答を確認するhttps://stackoverflow.com/a/44486971/2545680 –

答えて

0

私はこれをはるかに簡単に達成するためにバニラジャバスクリプトを使用することができました。

this.router.navigate(['/login', window.location.pathname]); 
関連する問題