私の 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 です。