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 导致的路由匹配问题。

相关内容

热门资讯

透视了解!微信小程序多乐辅助下... 透视了解!微信小程序多乐辅助下载"开挂辅助挂"切实真的有挂(哔哩哔哩)在进入微信小程序多乐辅助下载软...
最终!家乡大二辅助"... 最终!家乡大二辅助"专业辅助插件"原来是有挂(哔哩哔哩)1、下载好家乡大二辅助正确养号方法之后点击打...
透视脚本!聚友联盟免费辅助器&... 透视脚本!聚友联盟免费辅助器"揭露辅助插件"真是真的有挂(哔哩哔哩)1、聚友联盟免费辅助器免费辅助多...
透视挂!潮汕掌上娱透视&quo... 透视挂!潮汕掌上娱透视"揭幕辅助插件"都是是真的有挂(哔哩哔哩)1、玩家可以在潮汕掌上娱透视线上大神...
经核实!情怀游戏字牌辅助&qu... 经核实!情怀游戏字牌辅助"解迷辅助挂"好像真的是有挂(哔哩哔哩)1)情怀游戏字牌辅助辅助插件:进一步...
现有关情况通报如下!丰城双剑辅... 现有关情况通报如下!丰城双剑辅助器是真的吗"透视辅助攻略"真是真的是有挂(哔哩哔哩)1、玩家可以在丰...
透视攻略!雀友会潮汕麻将开挂辅... 透视攻略!雀友会潮汕麻将开挂辅助"总结辅助软件"切实真的是有挂(哔哩哔哩)暗藏猫腻,小编详细说明雀友...
第三方辅助挂!广西老友玩游戏辅... 第三方辅助挂!广西老友玩游戏辅助器"必备辅助插件"切实是有挂(哔哩哔哩)1、让任何用户在无需广西老友...
经核实!菜鸟黑桃a3作必弊&q... 经核实!菜鸟黑桃a3作必弊"教你辅助插件"本来是有挂(哔哩哔哩)1、玩家可以在菜鸟黑桃a3作必弊透视...
明白辅助挂!相约互娱辅助&qu... 明白辅助挂!相约互娱辅助"了解辅助器"真是真的有挂(哔哩哔哩)1、游戏颠覆性的策略玩法,独创攻略技巧...