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

Angular 18根路径AppComponent重复渲染两次问题求助

问题排查与解决

问题原因

你的路由配置犯了Angular里的典型错误:AppComponent是项目的根组件,它已经通过index.html中的<app-root>标签被默认渲染到页面中。而你在路由规则里又把根路径''指向了AppComponent,这就导致:

  • 第一次渲染:根组件本身的内容(包含<app-navbar>和<router-outlet>)
  • 第二次渲染:路由在<router-outlet>内部再次加载AppComponent,重复渲染了<app-navbar>和新的<router-outlet>

这就是访问根路径时出现两个导航栏的根本原因,而访问/home或/doctors时,路由加载的是对应组件,不会重复渲染根组件内容,所以显示正常。

修复方案

修改app-routing.module.ts中的路由配置,将根路径的路由改为重定向到/home,或者直接指向HomeComponent,同时保留守卫:

方案1:重定向到/home

const routes: Routes = [
  { path: '', redirectTo: '/home', pathMatch: 'full', canActivate: [KeycloakGuard] },
  { path: 'home', component: HomeComponent },
  { path: 'doctors', component: DoctorComponent },
];

方案2:直接将根路径指向HomeComponent

const routes: Routes = [
  { path: '', component: HomeComponent, canActivate: [KeycloakGuard] },
  { path: 'home', component: HomeComponent },
  { path: 'doctors', component: DoctorComponent },
];

方案1的重定向更简洁规范,避免重复定义HomeComponent路由。修改后,访问根路径时,路由会直接加载HomeComponent到根组件的<router-outlet>中,不会再重复渲染AppComponent,导航栏就只会显示一次了。


内容的提问来源于stack exchange,提问作者Papp Zoltán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:54:53