Angular 5路由无法匹配URL分段:访问指定URL报错求助
解决Angular路由匹配错误问题
看起来你遇到的是Angular路由路径不匹配的问题,结合你的URL和路由配置,我来帮你分析下原因和解决办法:
问题根源分析
你的访问URL是 http://localhost:8080/myapp/#/route1,其中:
http://localhost:8080/myapp/是应用在服务器上的部署路径#/route1是Angular哈希路由负责处理的部分
但你的路由配置里把 myapp 作为了父路由的path,这就导致Angular会在#后面的路径里寻找myapp/route1,但实际URL里#后面只有route1,自然匹配失败,抛出Cannot match any routes的错误。
具体解决方案
1. 正确设置base href
首先确保你的index.html里设置了正确的<base>标签,因为应用部署在/myapp/路径下,所以要把base href指向这个路径:
<base href="/myapp/">
这个标签告诉Angular,所有路由路径都是相对于/myapp/的,#后面的部分就是纯路由路径。
2. 调整路由配置
既然myapp是服务器部署路径,不是Angular路由的一部分,那路由配置里不需要保留path: 'myapp'的父路由,直接配置route1即可:
export const routeConfig = [ { path: 'route1', loadChildren: 'app/route1/route1.module#Route1Module' } ];
备选方案(如果需要保留myapp作为路由前缀)
如果你确实想让myapp作为路由的一部分(比如URL要变成http://localhost:8080/#/myapp/route1),那需要:
- 把
index.html的base href改成<base href="/"> - 保持你原来的路由配置不变
- 访问时使用
http://localhost:8080/#/myapp/route1
额外检查点
- 确认懒加载的模块路径
app/route1/route1.module#Route1Module是正确的,确保文件存在且模块导出正确 - 如果根路由有默认路径,记得加上
pathMatch: 'full',比如:{ path: '', redirectTo: 'route1', pathMatch: 'full' }
内容的提问来源于stack exchange,提问作者Maverick
相关产品推荐
相关产品推荐

