【发布时间】:2020-01-19 11:37:13
【问题描述】:
我有一个延迟加载模块 AccountModule,它在访问 https://localhost:4201/account 后被加载。
app.routing.ts
const routes: Routes = [
{
path: '',
loadChildren: () => import('./ui/pages/start/start.module')
.then(m => m.StartModule)
},
{
path: 'account',
loadChildren: () => import('./ui/pages/account/account.module')
.then(m => m.AccountModule)
},
];
export const AppRouting = RouterModule.forRoot(routes, {
useHash: false,
enableTracing: false
});
AccountModule 有两个子路由。其中一个被急切地加载(/overview),而另一个被延迟加载(/albums)。
因此,acount.routing.ts 看起来像这样:
const routes: Routes = [
{path: '', redirectTo: 'overview', pathMatch: 'full'},
{
path: 'overview',
component: AccountComponent,
},
{
path: 'albums',
loadChildren: () => import('./albums/albums.module').then(m => m.AlbumsModule),
// component: AlbumsComponent // This works!
},
];
export const AccountRouting = RouterModule.forChild(routes);
现在,如果我使用“渴望”加载 (component:AlbumsComponent) 一切正常。但是,如果我切换到loadChildren: () => ...,路由将不再起作用。这个routerLink
<app-raised-button [routerLink]="['/account/albums']">
My Albums
</app-raised-button>
导致https://localhost:4201/account/albums(工作)或https://localhost:4201/account/albums/overview(不工作)。但为什么?我该如何解决这个问题?
为什么它的行为会因为模块/组件的加载方式而有所不同?
如果我将路径设置为./albums:
{
path: './albums',
loadChildren: () => import('./albums/albums.module').then(m => m.AlbumsModule),
},
我只是得到
错误:无法匹配任何路由。网址段:
'account/albums'
【问题讨论】:
-
如果你尝试:
loadChildren: './albums/albums.module#AlbumsModule'会发生什么?
标签: angular