You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular路由无法打开子页面问题咨询

Angular路由异常问题解析

一、为什么/create-bet被重定向,必须使用/home/create-bet

  • 你的根路由(app-routing.module.ts)里并没有直接定义/create-bet这个路径,它是home懒加载模块下的子路由。根路由仅包含login、home和兜底的通配符**规则。
  • 当你调用this.router.navigateByUrl('/create-bet')时,Angular从根路由开始匹配,找不到对应路径,就会触发**通配符的重定向规则,跳转到home。
  • 而/home/create-bet是完整的合法路径:根路由匹配home并加载对应的懒加载模块,之后home模块的路由匹配create-bet,因此能正常跳转。

二、子页面bet-duration-select导航异常的原因

1. 直接访问/bet-duration-select被重定向

  • /bet-duration-select是绝对路径,根路由中不存在该路径,同样会触发根路由的**通配符重定向到home。正确的做法是使用相对路径导航(比如在CreateBetComponent中调用this.router.navigate(['bet-duration-select'], { relativeTo: this.route })),或者使用完整的绝对路径/home/create-bet/bet-duration-select。

2. 访问完整路径仍被重定向/子组件不显示

  • 重定向问题:检查home-routing.module.ts的路由顺序,通配符规则{ path: '*', redirectTo: '' }必须放在所有路由的最后。当前你的路由顺序是create-bet → 空路径 → *,理论上/home/create-bet/bet-duration-select应该优先匹配create-bet的子路由,不会触发*的重定向。如果问题依旧,排查下AuthGuard是否对子路由有额外的拦截逻辑。
  • 子组件不显示问题:BetDurationSelectComponent作为CreateBetComponent的子路由,必须在CreateBetComponent的模板中添加<router-outlet></router-outlet>标记。没有这个标记,Angular没有渲染子组件的容器,只会显示CreateBetComponent本身。

内容的提问来源于stack exchange,提问作者Sven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:06:24