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、填大坑微信小程序辅助...
透视代打!德普之星辅助软件,德... 透视代打!德普之星辅助软件,德普之星透视软件免费入口官网(透视)一直是有挂(有挂详细)-哔哩哔哩1)...
近年来!桂林八一字牌辅助,新星... 近年来!桂林八一字牌辅助,新星游辅助怎么购买,资料教程(真是有挂)-哔哩哔哩1、这是跨平台的新星游辅...
透视智能ai!德普之星有透视辅... 透视智能ai!德普之星有透视辅助吗,德扑圈有透视吗(透视)竟然有挂(有挂技巧)-哔哩哔哩德普之星有透...
最新消息!盛世辅助器,微乐广西... 最新消息!盛世辅助器,微乐广西小程序开发,积累教程(有挂方略)-哔哩哔哩1、下载好微乐广西小程序开发...
透视游戏!德普之星透视辅助软件... 透视游戏!德普之星透视辅助软件下载,德普之星透视软件免费入口官网(透视)一直真的有挂(有挂教程)-哔...
围绕透视问题!微信小程序微乐辅... 围绕透视问题!微信小程序微乐辅助器,wepoker怎么看底牌,窍要教程(新版有挂)-哔哩哔哩1、玩家...
透视模拟器!德扑之心免费透视,... 透视模拟器!德扑之心免费透视,德普之星私人局透视(透视)切实真的是有挂(有挂方式)-哔哩哔哩1、下载...
随着!微乐家乡麻辣自建房,we... 随着!微乐家乡麻辣自建房,wepoker有什么规律,项目教程(有挂实锤)-哔哩哔哩1、用户打开应用后...