2017-12-08 21 views
0

ヘッダー、メニュー、およびコンテンツdivを持つ簡単なページを作成しようとしています 誰かがメニューのアンカーをクリックすると、コンテンツのdivにそのページ関連する経路に対応する。 そして、今のところ、このコミュニケーションページ(ヘッダー、メニュー、コンテンツ)がどのルートにも一致するようにしたいだけです。ヘッダ、メニューとコンテンツを含む成分をLayoutComponent呼ばれるネストされたルータ無限ループ角度

APP-component.html

<router-outlet></router-outlet> 

appComponentは、他のコンポーネントにルーティングするだけであり、ここで

layout-component.html

<div> 
    <app-menu></app-menu> 
    <router-outlet></router-outlet> 
</div> 
と私のルーティング設定は以下の通りです:

export const routes: Routes = [ 
    { 
    path: 'login', 
    redirectTo: 'login', 
    pathMatch: 'full' 
    }, 
    { 
    path: 'common', 
    loadChildren: 'app/dsia-common/dsia-common.module' 
    }, 
    { 
    path: 'home', 
    redirectTo: '', 
    pathMatch: 'full' 
    }, 
    { 
    path: '', 
    component: LayoutComponent, 
    children: [ 
    { 
    path: '**', 
    pathMatch: 'full', 
    canActivate: [AuthGuardService], 
    component: GenericPageComponent 
    } 
] 

に、自分のサイト上での閲覧はlocalhost:4200/

私がポップアップし、ログインページを期待してい(AuthGuardServiceが私をログインルートにリダイレクトしています)。 ログインに成功すると、ログインコンポーネントがホームページにリダイレクトされます。 ホームページでは、LayoutComponentを使用して、ネストされたルータコンセントにヘッダー、メニュー、コンテンツを表示する必要があります。 これはすべてのURLでそうする必要があります。/home - >(リダイレクト先)/ - >(成功へのリダイレクト)/ login - >(成功へのリダイレクトへの)[authGuardService] - >(リダイレクト先への)--Activate []

/LayoutComponent

私のページを再帰的に呼び出されるログインページ(ナビゲーションイベントをキャンセルが常に呼ばれる)としてロードされていませんUnfortunaley。これは、/ loginパスがと呼ばれる場合に、AuthGuardServiceが使用されているためです(ログインルートがキャンセルされ、ログインルートにリダイレクトされるなど)。私の理解によれば、どちらの場合に当てはまるか。

誰かが私がここで明らかに欠けているものを指摘できますか?

ありがとうございました。

よろしくお願いいたします。 ベンジャミン

+0

(https://stackoverflow.com/questions/34628848/angular2-multiple-router-outlet-in-the-same-template)同じテンプレートにAngular2複数ルータ出口]の可能性のある重複 – DrNio

答えて

0

ログインをログインにリダイレクトします。無限ループが存在するのは正常です。ルーティング設定を変更してみてください。ここにサンプルがあります。

export const routes: Routes = [ 
{ 
    path: '', 
    redirectTo: 'login', 
    pathMatch: 'full' 
}, 
{ 
    path: 'login', 
    component: LoginComponent, 
} 
] 
関連する問題