Javascript 延迟加载角度模块,但不使用路由前缀
我有一个应用程序,我正在懒洋洋地加载一个名为Javascript 延迟加载角度模块,但不使用路由前缀,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个应用程序,我正在懒洋洋地加载一个名为lazy的模块。该模块通过以下方式延迟加载: { path:'lazy', loadChildren: './lazy/lazy.module#LazyModule' } lazy模块中有以下路由: const routes = [ { path: '', component: LazyComponent }, { path: 'faq', component: FaqComponent }, {
lazy
的模块。该模块通过以下方式延迟加载:
{
path:'lazy',
loadChildren:
'./lazy/lazy.module#LazyModule'
}
lazy
模块中有以下路由:
const routes = [
{
path: '',
component: LazyComponent
},
{
path: 'faq',
component: FaqComponent
},
{
path: 'details',
component: DetailsComponent
},
]
上述操作很好,但我只能通过/lazy/faq
或/lazy/details
访问延迟加载模块的路由。但我真正想要的是不要使用路由前缀lazy
,而是直接通过/faq
和/details
访问我的延迟加载模块的路由
这可能吗?我还没有找到解决方案。延迟加载模块中组件的url是指向模块的url的组合,例如'lazy'->lazyloademdodule加上该模块中的相对路径,例如'faq->FaqComponent 因此url是
path/to/lazy模块+“relative/path”
。在您的情况下,lazy/faq
。不能省略前缀
您可以在路由配置中添加重定向:
path: 'faq',
pathMatch: 'full,
redirectTo: 'lazy/faq'
在惰性模块中使用路由时,可以使用相对路由:this.router.navigate(['faq'])
但是浏览器中的url将是lazy/faq
另一种选择是使用空路由加载模块:
path:'',
loadChildren: ...
但这会在应用程序启动时立即加载模块