javascript - 延迟加载角度模块但不使用路由前缀
问题描述
我有一个应用程序,我在其中延迟加载一个名为lazy
. 该模块通过以下方式延迟加载:
{
path:'lazy',
loadChildren:
'./lazy/lazy.module#LazyModule'
}
该lazy
模块中包含以下路由:
const routes = [
{
path: '',
component: LazyComponent
},
{
path: 'faq',
component: FaqComponent
},
{
path: 'details',
component: DetailsComponent
},
]
以上工作正常,但我只能通过/lazy/faq
or访问我的延迟加载模块的路由/lazy/details
。但我真正想要的是不使用路由前缀并直接通过andlazy
访问我的延迟加载模块的路由。/faq
/details
这可能吗?我一直无法找到解决方案。
解决方案
延迟加载模块中组件的 url 是模块 eb 'lazy'-> LazyLoadedModule 的 url 加上该模块中的相对路径的组合,例如 'faq->FaqComponent。
所以网址是path/to/lazy-module + 'relative/path'
. 在你的情况下lazy/faq
。您不能省略前缀。
您可以做的是在路由配置中添加重定向:
path: 'faq',
pathMatch: 'full,
redirectTo: 'lazy/faq'
当您在惰性模块中使用路由时,您可以使用相对路由:this.router.navigate(['faq'])
但是浏览器中的 url 会lazy/faq
。
另一种选择是使用空路由来加载您的模块:
path:'',
loadChildren: ...
但这会在您的应用程序启动时立即加载您的模块。
推荐阅读
- karate - 如何自动化一个 API,它采用不同的查询参数组合并给出相应的结果(使用空手道)
- icalendar - Web 日历中的 ics 事件更新失败
- gearman - Gearman:第一次使用的麻烦
- python - 安装 virtualenvwrapper virtualenvwrapper.sh 位置时出错
- laravel - 如何将 font-awesome 导入 Laravel?
- jquery - Hybris 中的产品比较
- python - 多对一合并,左加入python
- powershell - Powershell get-adcomputer - 过滤选项对象值
- rest - 启动 HTTP 服务器时如何使用 maven 编译器插件传递参数?
- kibana - 用户管理权限错误