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

如何正确配置Angular嵌套路由 解决/list/:id加载组件错误问题

问题根因

你第一种路由配置没有语法错误,问题核心是父路由绑定的组件需要预留子路由的渲染入口:
当你给path: 'list'直接绑定component: ListComponent时,Angular 会把ListComponent渲染到上层的<router-outlet>中,而它的子路由path: ':id'对应的ViewComponent,默认会渲染到ListComponent模板内部的<router-outlet>里。你访问/list/:id只看到ListComponent,就是因为ListComponent的模板里没有添加<router-outlet>占位,子组件没有渲染位置,自然不会显示。

两种实现方案对应不同业务需求

方案1:保留父子组件嵌套结构

如果你的业务需求是/list/:id页面要包含ListComponent的内容(比如左侧是列表、右侧是详情的布局),不需要修改路由配置,直接在ListComponent的模板里添加<router-outlet>即可:

<!-- list.component.html 模板 -->
<!-- 原有列表逻辑代码 -->
<div class="detail-container">
  <router-outlet></router-outlet>
</div>

此时访问/list会仅展示列表内容,访问/list/[id值]会在列表内容的基础上,在<router-outlet>位置渲染ViewComponent的内容。

方案2:同路由分组下的独立页面

如果你的业务需求是/list和/list/:id是完全独立的两个页面,不需要互相嵌套内容,你写的第二种配置就是标准实现:

{
  path: 'list',
  children: [
    { path: '', component: ListComponent },
    { path: ':id', component: ViewComponent }
  ]
}

这种写法下path: 'list'本身没有绑定组件,两个子路由的内容都会渲染到上层的<router-outlet>,实现两个页面完全独立展示,同时路由在逻辑上仍然归属于list分组,不会破坏路由层级的分类逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:36:04