2017-02-14 6 views
0

私は、アプリケーションのルートレベルで子ルートが表示されている問題があります。Angular2の他のモジュールから子供をLazyloading

私のアプリは、SecureModuleとPublicModuleをインポートするルートアプリケーションモジュールで構成されています。その後、SecureModuleはProviderModuleとPracticeModuleをインポートします。各モジュールは、.forChild(それを除いて、forRootを定義するAppModuleを除く)を持つ独自のルートを定義します。何らかの理由で、すべてのデフォルトのパス(パスとして ''としてリストされているもの)は、ルートモジュールのモジュールレベルにあります。ここ

は、ルートツリーを示す占い図である。 Augury Root Tree

SecureComponentがセキュアエリアのレイアウトを定義し、それ自身のルータ出口を有する特徴成分(NOセレクタ)です。ルートツリーからわかるように、PracticeモジュールとProviderモジュールのパスは完全にレイアウトされています。しかし、PracticeモジュールとProviderモジュールもAppComponentからまっすぐに出てきます。

私はloadChildren経由で子パスを読み込み、デフォルトパスでpathMatchを完全に使用しているので、なぜルートコンポーネントに接続しているのかわかりません。

マイセキュアモジュールルートは、例えば次のように定義される:

export const secureRoutes = [ 
{ 
    path: 'secure', component: SecureComponent, children: [ 
     { path: '', redirectTo: 'firstuse', pathMatch: 'full' }, 
     { path: 'firstuse', component: FirstUseComponent }, 
     { path: 'practice', loadChildren: './+practice#PracticeModule' }, 
     { path: 'provider', loadChildren: './+provider#ProviderModule' } 
    ] 
}, 

]。

私の練習ルートは次のように定義されています

export const practiceModuleRoutes = [ 
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' }, 
{ path: 'dashboard', component: PracticeDashboardComponent }, 
{ path: ':id', component: PracticeViewerComponent } 
]; 

私のアプリのルートは次のように定義されています

export const appModuleRoutes: Routes = [ 
{ path: '', redirectTo: 'public', pathMatch: 'full' }, 
{ path: 'public', component: PublicComponent }, 
{ path: 'id_token', redirectTo: 'secure' }, 
{ path: 'logoff', component: LogoffComponent }, 
{ path: 'Unauthorized', component: UnauthorizedComponent }, 
{ path: '**', component: NoContentComponent }, 
]; 

誰もがそれらの実践とプロバイダのデフォルトルートは、ルートアプリで提示されている理由についての考えを持っています成分?

答えて

0

私のAppModuleがセキュアとパブリックのモジュールをインポートしていることがわかりました。それを実行したとき、ルートレベルにそれらのモジュールのルートが含まれているように見えます。 loadChildrenが発生すると、両方の場所に存在するルートにも正しいパスがロードされました。

私の問題を解決するために、AppModuleからSecureModuleとPublicModuleのインポートを削除しました。これにより、パスが子としてのみロードされる方法がクリアされました。

関連する問題