带参数的角度 10 路由和导航错误

Posted

技术标签:

【中文标题】带参数的角度 10 路由和导航错误【英文标题】:angular 10 routing & navigation error with parameter 【发布时间】:2020-12-30 13:45:03 【问题描述】:

路由数组

const routes: Routes = [
 ...
  path:'exam-list',component: ExamListComponent,
    path:'exam-panel/:Id',component: ExamPanelComponent
..
];

数组导入

@NgModule(
  imports: [RouterModule.forRoot(routes)],

点击事件

onSelect(examdetails)

this.router.navigate(['exam-panel',examdetails.Id])

点击事件 onselect()

我收到了这个错误 错误:未捕获(承诺中):错误:无法匹配任何路由。 URL 段:'exam-panel' 带参数 当我使用 routerLink 时,它可以正常工作,但是单击事件无法与 router.navigate 一起使用

当我使用 [routerLink]="['/exam-panel/',examdetails.Id]" 时,它正在工作,但是当我使用 "router.navigate" 时,它使用参数导航第一个路由考试面板好的,然后自动路由到首页

【问题讨论】:

【参考方案1】:

如 doc https://angular.io/docs/ts/latest/api/router/index/Router-class.html 中所述,您可以使用任一

navigateByUrl:

router.navigateByUrl(`/exam-panel/$examdetails.Id`);

或使用导航:

router.navigate(['/exam-panel', examdetails.Id], relativeTo: route);

相对于调用请求导航到相对于当前 URL 的动态路由路径。

请记住我们经常忘记/ 这是一条相对路径。路由器。 navigate 需要一个 relativeTo 参数来进行相对导航

【讨论】:

router.navigateByUrl(/exam-panel/$examdetails.Id) ?你的examdetails.Id是什么来的?你控制台记录了吗? examdetails 是一个来自 API HTTP 请求的 json 数组 当我使用 [routerLink]="['/exam-panel/',examdetails.Id]" 时它正在工作,但是当我使用 "router.navigate" 时它会导航第一条路线考试面板参数确定,然后自动路由到主页 router.navigate(['/exam-panel',examdetails.Id], relativeTo: route);您是否尝试在考试面板之前在 router.navgate 中添加“/”? relativeTo: route 你能解释一下什么是“路由”

以上是关于带参数的角度 10 路由和导航错误的主要内容,如果未能解决你的问题,请参考以下文章

404 带参数的 onWeb API 路由

如何使用 NestJS 创建带参数的嵌套路由

角度路由器:忽略路径参数中的斜杠

vue-resource 路由带参数传参

带参数的模板订阅行为

组件导航,带参数从后台弹出