0

所以我试图导航到时间表路线。

该路由将员工的姓名作为路由器参数,将开始和结束日期作为查询参数。

this.router.navigate(['/timesheet', this.name], { queryParams: { start_date: startString, end_date: endString }});

我的 route.js 看起来像这样:

{
  path: 'timesheet/:artistName',
  component: TimesheetComponent,
  canActivate: [RoleGuardService],
  data: {roles: ['consume:admin', 'consume:exec', 'consume:producer' ]},
  resolve: {
    timesheet: TimesheetResolve
  },
}

当我尝试点击 REST 后端时形成的 URL 在 start_date 和 end_date 中具有空值。

GET http://localhost:4200/api/v1/timesheet/artist/Jimmy?start_date=null&end_date=null 500 (Internal Server Error)

我已经检查过我为开始日期和结束日期传递的值都不为空。

有什么想法我在这里做错了吗?提前致谢...

4

2 回答 2

1

您可以尝试使用硬编码值吗?如果它有效,那么在将值分配给变量的位置与调用 this.router 的位置之间存在问题。

this.router.navigate(['/timesheet', this.name], { queryParams: { start_date:'12-Aug-2019', end_date:'12-Sep-2019' }});

检查导航栏如何显示 http 请求,它应该是:

http://localhost:4200/api/v1/timesheet/artist/Jimmy?start_date=12-Aug-2019&end_date=12-Sep-2019

如果这不起作用,您可以在 stackblitz 上复制代码,以便我们查看它。

这不应该是路由器的问题,因为 URL 的其余部分已正确形成。

于 2019-09-04T07:42:11.897 回答
0

这是由我使用的解析器尝试使用获取查询参数引起的

return this.artistService.getTimesheet(route.paramMap.get('artistName'),
  route.paramMap.get('start_date'), route.paramMap.get('end_date'));

而不是尝试这个:

return this.artistService.getTimesheet(route.paramMap.get('artistName'),
  route.queryParamMap.get('start_date'), route.queryParamMap.get('end_date'));
于 2019-09-04T15:58:57.070 回答