40

私の Angular ルート ガードのいくつかでは、ログインが成功した後にリダイレクトする「次の」パスを設定したいと考えています。

したがって、通常のガードcanActivate関数のシグネチャは次のようになります。

public canActivate(route: ActivatedRouteSnapshot): Observable<boolean> | boolean {
  // ...blah
  return true;
}

routeパラメータは のインスタンスですActivatedRouteSnapshot

以前は、「次の」URL を取得するために、route.url. 子ルートがない限り、これは問題なく機能します。

私の例の URL は/search/advanced?query_hash=1221d3b57f5616ee16ce70fdc78907abで、advancedは の子ルートですsearch

子ルートは で見つけることができますがroute.children、これらの子ルート (特に複数のレベルが存在する可能性があります) を反復処理し、このように URL を結合するのは厄介で醜いように思えます。

私が興味を持っているのはroute._routerState.urlプロパティ(下の画像の下部にある文字列)に含まれていますが、それは「プライベート」変数です。

何か不足していますか?から完全な (子パスを含む) URL をエレガントに取得するにはどうすればよいActivatedRouteSnapshotですか? Angular のバージョンは 5.1 です。

ここに画像の説明を入力

4

3 に答える 3