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、玩家可以在微信微乐...
我来教大家!微乐智能辅助app... 您好,微乐智能辅助app这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多...
推荐一款!微乐春天小程序辅助(... 推荐一款!微乐春天小程序辅助(透视挂),微乐四冲都是真的是有透视挂教程1.微乐春天小程序辅助 选牌创...
揭秘关于!微乐游戏公众号辅助器... 揭秘关于!微乐游戏公众号辅助器(透视器),微乐A三纸牌一贯真的有透视挂方法1)微乐游戏公众号辅助器有...
实测分享!微信小程序游戏破解器... 实测分享!微信小程序游戏破解器(开挂),微乐惯蛋真是是有透视挂方法一、微信小程序游戏破解器可以开透视...
一秒答解!微乐游戏小程序脚本(... 一秒答解!微乐游戏小程序脚本(外挂),微乐刨幺一直真的是有透视挂插件1、打开软件启动之后找到中间准星...
最新技巧!微乐游戏辅助脚本安装... 最新技巧!微乐游戏辅助脚本安装(辅助器),微乐A三纸牌好像真的有透视挂教程微乐游戏辅助脚本安装是不是...
重大通报!微乐广西麻辣辅助器(... 重大通报!微乐广西麻辣辅助器(透视挂),微乐三丁拐一直存在有透视挂技巧运微乐广西麻辣辅助器辅助工具,...
揭秘关于!微乐江苏小程序游戏破... 揭秘关于!微乐江苏小程序游戏破解下载(透视器),微乐山东麻将其实真的有透视挂攻略微乐江苏小程序游戏破...
玩家必看攻略!微信小程序 微乐... 玩家必看攻略!微信小程序 微乐陕西挖坑 外挂(透视挂),微乐斗地主原来是真的有透视挂插件运微信小程序...