2017-01-13 16 views
2

現在、私のプロジェクトにはルーティングが設定されています。ユーザーがログインすると、彼らはいくつかの子のルートユーザーを持つ家庭のモジュールにリダイレクトしている4200 /デフォルト・パス/ログイン角度2ルーティングでベースURLを動的に変更するにはどうすればよいですか?

はlocalhost:すべての新しいユーザーがにリダイレクトされますにナビゲートすることができます。

はlocalhost:4200 /デフォルト・パス/ ホーム
はlocalhost:4200 /デフォルト・パス/ ホーム/アカウント
はlocalhost:4200 /デフォルト・パス/ ホーム/アカウント/プロファイル
はlocalhost:4200 /デフォルト・パス/ ホーム/ダッシュボード

...というように。

ここで、太字の部分はすでにホームモジュールに設定されており、それ以上編集する必要はありません。しかし、default-pathを別のものに変更したいと思います。

各ユーザーは、青、赤、緑の3つのプロジェクトのいずれかに属しているとします。この情報はの後にのみ利用可能で、の場合、ユーザーは資格情報を送信し、ログインボタンを押します。ルートは、ログイン後を言うの私が好きな何

は次のとおりです。

はlocalhost:4200/プロジェクト・ブルー /ホーム
はlocalhost:4200/プロジェクト-赤 /ホーム
はlocalhost:4200/プロジェクト・グリーン /ホーム

大胆な部分は、関連するコンポーネントが異なる別々のモジュールではなく、URLで見たい定数だけです。

現在、私の<base>タグはインデックスにあります<base href='/'>私はこの属性を編集しようとしています。私が持っているものは次のようなものです:

processLoginSuccess(loginTicket): void { 
    const routeName = loginTicket.baseUrl // returns 'project-red' 
    let b = document.getElementsByTagName('base')[0] 
    b.setAttribute('href', routeName) 

    this._router.navigate(['/home']); 
} 

しかしこれはうまくいかないようです。

アイデア?

+0

http://stackoverflow.com/questions/37756167/dynamic-routing-based-on-external-data/38096468#38096468 –

+0

@GünterZöchbauer:それのように見えること子ルートの設定をリセットします。ベースURLを編集する必要があります。 resetConfigでこれを行うことはできますか? – Snowman

+0

いいえ、ベースURLを変更する方法がないと思います –

答えて

6

base要素の値をhrefに設定する代わりに、カスタム操作でAPP_BASE_HREFを提供することにより、プログラムでベースURLを設定できます。

これは、すでにここで説明されています:https://stackoverflow.com/a/41674411/415790

+0

+25点あります:) – Snowman