【发布时间】:2019-01-20 17:43:04
【问题描述】:
我正在尝试使用来自 Angular 路由器的通配符“**”创建默认路由。该默认路由将加载一个惰性模块,然后它必须解决自己的路由。问题是当我有以下配置时,它没有按预期解决:
export const routes = [
{
path: '',
component: 'DashboardComponent'
},
{
path: '**',
loadChildren: './lazy/lazy.module#LazyModule'
}
];
@NgModule({
imports: [
BrowserModule,
RouterModule.forRoot(routes)
],
declarations: [AppComponent]
bootstrap: [AppComponent]
})
export class AppModule {}
const routes = [
{
path: '',
component: MainComponent
}
{
path: 'hello', // hoping to pick up the wildcard and resolve the route
component: HelloComponent
}
];
@NgModule({
imports: [
CommonModule,
RouterModule.forChild(routes)
],
declarations: [
AnyComponent,
EditComponent
]
})
export default class LazyModule {}
例如。对于 mydomain.com/hello,它不会向我显示 HelloComponent,而是向我显示 MainComponent。
我的配置有问题还是不应该这样工作?
提前致谢。
【问题讨论】:
-
你试过
mydomain.com/hello/hello。我的猜测是它解析了第一个路径值的通配符,然后考虑了下一层路径的惰性模块路由方案,并且由于/hello的第二部分什么都不是,所以它解析为第一条路由。我以前从未在通配符路由上看到过延迟加载,但我认为您必须使用某种类型的辅助路径部分才能在该子模块中进一步解析 -
@TimKlein 感谢您的帮助。我刚试过你告诉我的,因为它在世界上都很有意义,但它仍然不起作用。似乎它以 /hello/hello 作为根路径并始终显示 LazyComponent。如果不是太麻烦,你可以做一个测试吗?对不起我的英语不好。
标签: angular lazy-loading wildcard angular-router