ルートモジュールが遅延モジュールをロードするルーターリンクのリストを表示するアプリケーションを開発しようとしています。
const appRoutes: Routes = [
{
path: 'compose',
component: ComposeMessageComponent,
outlet: 'popup'
},
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AuthGuard]
},
{
path: 'crisis-center',
loadChildren: 'app/crisis-center/crisis-center.module#CrisisCenterModule',
data: { preload: true }
}
];
この特定の場合、管理モジュールには、それ自体で宣言されたコンポーネント用の2つのルーターリンクと、別のモジュール(manage-heroes)用の1つのルーターリンクがあります。
const adminRoutes: Routes = [
{
path: '',
component: AdminComponent,
canActivate: [AuthGuard],
children: [
{
path: '',
canActivateChild: [AuthGuard],
children: [
{ path: 'crises', component: ManageCrisesComponent },
{path: 'heroes', component: ManageHeroesComponent},
{ path: '', component: AdminDashboardComponent }
]
}
]
}
];
私はすべてのパスにうまくナビゲートできますが、ヒーローに行き、独自のルートの1つ(たとえば、ゼロ)にナビゲートしようとすると、ページが見つかりません。ヒーローのルーティングは次のようになります。
const manageHeroesRoutes: Routes = [
{
path: '',
component: ManageHeroesComponent,
children: [
{ path: 'zeroes', component: ManageZerosComponent },
{ path: 'friends', component: ManageFriendsComponent }
]
}
];
管理ルートのヒーローのパスを次のように置き換えた場合:
children: [
{ path: 'crises', component: ManageCrisesComponent },
{path: 'heroes', loadChildren: 'app/admin/manage-heroes/manage-heroes.module#ManageHeroesModule'},
{ path: '', component: AdminDashboardComponent }
]
ヒーローのルートに問題なくアクセスできます。しかし、ManageHeroesモジュールを遅延ロードせずにアクセスできない理由を理解したいと思います。
ここに私の問題を再現したstackblitzへのリンクがあります https://stackblitz.com/edit/angular-pm9wsz
ありがとう。
ルートパスでコンポーネントを使用する場合、このルートを処理するコンポーネントを定義します。 Angularはそのコンポーネントのみをロードします。あなたの場合、コンポーネントは他のモジュールにありますが、angularは他のモジュールをロードしません。そのルートを含む。
ルートパスの定義で「子ロード」を使用する場合、angularはモジュールとその内部ルートを含むitensを遅延ロードします。
あなたの間違いは、crises
とheroes
をAdminComponent
の子ルートとして見ようとしているものですが、それらはAdminComponent
と同じレベルにあります。コードを修正してください:
const adminRoutes: Routes = [
{
path: '',
component: AdminComponent,
canActivate: [AuthGuard],
},
{path: 'crises', component: ManageCrisesComponent},
{path: 'heroes', component: ManageHeroesComponent}
];
これでangularはベース/
なので
admin
からAdminComponentadmin/crises
to ManageCrisesComponentadmin/heroes
to ManageHeroesComponentangular子ルートを追加した公式例: https://stackblitz.com/edit/angular-omprkj からの分岐