angular2 を使用して単一ページ アプリケーションを構築していますが、アプリのルーティングに応じて別のアプリケーション テンプレートをレンダリングする必要があります。最上位レベルでは、メイン アプリケーション テンプレートとアプリの管理テンプレートを切り替えることができる必要があります。
ルーティング ルール:
- URL パスが /auth で始まる場合、AuthApp によって処理されます。
- それ以外で始まる場合は、MainApp で処理する必要があります
実装:
これを実現するために、このように AuthApp または MainApp のいずれかに責任を委譲する最高レベルのコンポーネント アプリを用意しました。
@RouteConfig([
{
path: '/auth/...',
component: AuthApp,
as: 'Auth'
},
{
path: '/...',
component: MainApp,
as: 'Main'
}
])
次に、各サブアプリ (AuthApp、MainApp など) には、このような独自のルート定義があります。
@RouteConfig([
{ path: '/current-vacancies', CurrentVacancies, as: 'CurrentVacancies', useAsDefault: true },
{ path: '/candidates/create', CandidateCreate, as: 'CandidateCreate'},
...
])
機能的にもデザインの観点からも、これは素晴らしい作品です!
問題:
アプリケーションのルート構成でパスが指定されていないメイン アプリ (例: /...
=> MainApp) では、ネストされた URL パスは必要ありません。たとえば、アプリ (routerLink) を介して CurrentVacancys に移動すると、URL が更新され、余分な不要なスラッシュが付加されます。URL パスは、読み取り.../#//current-vacancies
たいときに次のようになります.../#/current-vacancies
。
アドレスバーに入力すると、アプリケーションルーティングが実際に機能し.../#/current-vacancies
、正しく遷移します。しかし、アプリケーションの routerLink ディレクティブを介してナビゲートすると、不要なスラッシュが追加されます。
これが起こっている理由を論理的に理解しています.MainAppに委譲するルートコンポーネントには「/」のパスがあり、子コンポーネントと連結されて完全なURLパスを形成します. ただし、この場合、スラッシュを追加することは望ましくありません。どうすればそれを削除できるか、または何らかの形でこの動作をオーバーライドできるかについてのアイデア。
ところで、MainApp コンポーネント ルーティングを最上位に移動することを検討しました。これにより、私が報告している URL パスの問題は解決されますが、最上位でテンプレートを切り替えることはできません。
要約すれば
どちらかで私を助けてください
/
メインアプリルートで不要なものを削除する方法"preferred option"
、または- ネストされたコンポーネント ルーティングを使用して切り替え可能な最上位テンプレートをアプリに設計する方法。
ありがとう