Angular对某些路由移除了base-href。
创始人
2024-10-24 15:31:41
0

在使用 Angular 路由时需要注意,如果在根模块中设置了 base-href,在使用 loadChildren 懒加载模块时会移除这个 base-href,导致路由无法正确匹配。因此需要在懒加载模块中重新设置 base-href。

示例代码:

// app.module.ts @NgModule({ imports: [ CommonModule, RouterModule.forRoot(routes, { initialNavigation: 'enabled', relativeLinkResolution: 'legacy', }), ], }) export class AppModule {}

// lazy.module.ts @NgModule({ imports: [ CommonModule, RouterModule.forChild([ { path: '', component: LazyComponent, children: [ { path: 'child', component: LazyChildComponent, data: { baseHref: '/lazy', }, }, ], }, ]), ], }) export class LazyModule { constructor( private router: Router, private activatedRoute: ActivatedRoute ) { this.router.events .pipe(filter((e) => e instanceof NavigationEnd)) .subscribe(() => { const { root } = this.activatedRoute; const { baseHref } = root.firstChild.snapshot.data; if (baseHref) { const base = document.createElement('base'); base.href = baseHref; const head = document.getElementsByTagName('head')[0]; head.insertBefore(base, head.firstChild); } }); } }

上述代码中,我们在路由配置中加入了一个 data 属性,用来存储每个子路由需要设置的 base-href。在 LazyModule 的 constructor 中通过订阅路由事件,在路由变化时手动插入新增的 base 标签来设置 base-href。这个方法可以避免 Angular 移除 base-href 导致的路由匹配问题。

相关内容

热门资讯

免费测试版!宝宝浙江辅助脚本,... 免费测试版!宝宝浙江辅助脚本,微乐四川小程序修改器,详细攻略(有挂技术)微乐四川小程序修改器透视方法...
总算清楚!创思维透视辅助器,哈... 总算清楚!创思维透视辅助器,哈局13张辅助器,详细器(有挂技术)1、首先打开创思维透视辅助器辅助器下...
专业讨论!同城游辅助器软件下载... 专业讨论!同城游辅助器软件下载,广东雀神辅助器透视,详细脚本(有挂攻略)一、同城游辅助器软件下载可以...
今日科普!潮汕汇游戏辅助,随意... 今日科普!潮汕汇游戏辅助,随意玩正版房卡有开挂,详细方法(有挂规律)随意玩正版房卡有开挂辅助器是一种...
重大通报!超级三加一辅助,欢乐... 重大通报!超级三加一辅助,欢乐情怀辅助挂,详细插件(有挂讲解)1、进入游戏-大厅左侧-新手福利-激活...
如何分辨真伪!随意玩有辅助吗,... 如何分辨真伪!随意玩有辅助吗,宝宝游戏辅助器,详细技巧(今日头条)1、进入到随意玩有辅助吗是否有挂之...
必看攻略!悟空大厅微信辅助,泉... 必看攻略!悟空大厅微信辅助,泉州相约十三水辅助,详细挂(有挂方式)1、全新机制【泉州相约十三水辅助a...
必备教程!微信小程序中至赣牌圈... 必备教程!微信小程序中至赣牌圈辅助,蘑菇辅助脚本,详细挂(有挂攻略);1、玩家可以在微信小程序中至赣...
今日重大通报!欢乐联盟卡五星辅... 今日重大通报!欢乐联盟卡五星辅助,广西微乐小程序脚本,详细脚本(有挂实锤)1、实时欢乐联盟卡五星辅助...
重大科普!来几局辅助器开挂,链... 重大科普!来几局辅助器开挂,链接大厅辅助插件有哪些,详细神器(果真有挂)1、金币登录送、破产送、升级...