私は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.
});
});
}
この回答を確認するhttps://stackoverflow.com/a/44486971/2545680 –