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

Angular 18路由配置下页面刷新时资源路径被追加父组件相对路径的问题求助

Angular 18路由配置下页面刷新时资源路径被追加父组件相对路径的问题求助

各位大佬好,我最近在Angular 18项目里配置了嵌套路由,遇到一个刷新页面就触发的资源加载问题,想请教下大家怎么解决。

先贴出我的路由配置代码:

根路由配置(app.routes.ts)

import { Routes } from '@angular/router';
import { LoginComponent } from './login/login.component';

export const routes: Routes = [
    { path: '', component: LoginComponent },
    { path: 'dashboard', loadChildren: () => import('./dashboard/dashboard.routes').then(m => m.routes)}
];

仪表盘子路由配置(dashboard.routes.ts)

import { Routes } from '@angular/router';

import { DashboardComponent } from './dashboard.component';
import { EventsComponent } from './components/events/events.component';
import { EventQuestionsComponent } from './components/events/eventQuestions/eventQuestions.component';
import { StatsComponent } from './components/stats/stats.component';

export const routes: Routes = [
    { path: '', component: DashboardComponent, children : [
            { path: '', component: StatsComponent },
            { path: 'events', component: EventsComponent },
            { path: 'events/questions', component: EventQuestionsComponent },
            { path: 'stats', component: StatsComponent }
        ]}
];

具体问题是:当我从登录页正常跳转到/dashboard、/dashboard/events这类子路由页面时,所有静态资源(CSS、JS、图片等)都能正常加载,但一旦在/dashboard/events页面刷新浏览器,控制台就会弹出一堆404错误。查看请求路径后发现,原本应该是/assets/css/main.css的资源,请求路径变成了/dashboard/assets/css/main.css——明显是资源路径被自动追加了父路由的前缀,导致找不到对应的文件。

目前我尝试把index.html里的资源引用从相对路径改成带斜杠的绝对路径后,问题暂时解决了:

<!-- 修改前 -->
<link rel="stylesheet" href="assets/css/main.css">
<!-- 修改后 -->
<link rel="stylesheet" href="/assets/css/main.css">

但我还有两个疑问想请教大家:

  • 除了修改资源引用路径的写法,有没有更贴合Angular路由机制的解决方案?比如在路由配置层面做调整?
  • 之前看到有人提到可以用APP_BASE_HREF来配置基础路径,这个方法具体怎么应用到我的场景里?

麻烦各位有经验的朋友帮忙指点下,感谢大家!

备注:内容来源于stack exchange,提问作者Binary Dharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 10:23:08