2017-06-01 15 views
0

私は、ユーザーが/securedパスを訪問したときに動的に(私のapp.routing.tsに)ロードされたを持っています。このモジュールでAngular2ルーター - デフォルトの子にリダイレクトされるコンポーネントを持つ親ルート

Iは、以下のルート定義を有する:このモジュールとして

const APP_ROUTES: Routes = [ 
    { path: '', component: SecuredComponent, , children: [ 
     { path: 'application', loadChildren: 'app/application/application.module#ApplicationModule'} 
    ]}, 
    { path: '**', pathMatch: 'full', redirectTo: 'application' } 

]; 

loadChildrenがロードされ、次いで例で''(デフォルト)ルートが'/secured'を実際に指します。 ''パスでは、カスタムレイアウトとこのルートの子を表示する<router-outlet>タグがあるので、SecuredComponentをロードする必要があります。

しかし'/secured'SecuredComponentは単なるプレースホルダですので、私は自動的に'application'子ルートにリダイレクトする必要があるため、ユーザーが着陸するための有効なルートではありません。

問題は、私は非既存のルートに入るとき、例えば'secured/any-fake-route'

答えて

0

問題は{ path: '**', pathMatch: 'full', redirectTo: 'application' }定義が一番下にあったということだったので、それを取得ヌヴェールのように定義されたリダイレクト機能のみ、呼び出されるということです''が有効なルートであり、最初に一致したため、ユーザーが'/secured'を訪問したときに呼び出されます。

次のように私はこれを修正:

const APP_ROUTES: Routes = [ 
    { path: '', pathMatch: 'full', redirectTo: 'application' }, 
    { path: '', component: SecuredComponent, canActivate: [SecuredMiddlewareService], children: [ 
     { path: 'application', loadChildren: 'app/application/application.module#ApplicationModule'} 
    ]}, 
    { path: '**', pathMatch: 'full', redirectTo: 'application' }, 
]; 

は、最初の行に注意してください。ユーザーが'/secured'にアクセスすると、自動的に'/secured/application'にリダイレクトされます。 'application'は、子ルート''であるため、両方とも呼び出されます。

したがって、この構成では、以下の例の全ては、必要に応じて'/secured/application'に正常にリダイレクト:

  • '/secured'
  • '/secured/application'
  • '/secured/any-fake-route'
関連する問題