如何修复传递给 Angular 路由参数的值?

How to fix the values passed to an Angular routing parameter?

假设我按以下方式在路由模块中设置了路由。

  {
    path: "dashboard/project/:projectId",
    loadChildren: () =>
      import("./modules/project-details/project-details.module").then(
        (m) => m.ProjectDetailsModule
      ),
  },
  {
    path: "dashboard/project/statistics",
    loadChildren: () =>
      import("./modules/projects-statistics/projects-statistics.module").then(
        (m) => m.ProjectsStatisticsModule
      ),
  },

当我以下面的方式使用 routerLink 时,它会将“statistics”作为“projectId”参数的值并转到 ProjectDetailsModule 而不是转到 ProjectsStatisticsModule。

[routerLink]="['/dashboard', 'project', 'statistics']"

如何告诉代码不要将 'statistics' 作为 'projectId' 参数的值并路由到 ProjectsStatisticsModule 而不是 ProjectDetailsModule?

添加路由的顺序很重要。先添加具体路由,再添加带路径参数的路由。这样,一旦评估了所有具体路由,带路径参数的路由总是在最后评估。

对于您的情况,颠倒路由声明的顺序应该会产生预期的结果。

const routes = [
  {
    path: "dashboard/project/statistics",
    loadChildren: () =>
      import("./modules/projects-statistics/projects-statistics.module").then(
        (m) => m.ProjectsStatisticsModule
      ),
  },
  {
    path: "dashboard/project/:projectId",
    loadChildren: () =>
      import("./modules/project-details/project-details.module").then(
        (m) => m.ProjectDetailsModule
      ),
  }
];

声明路由时顺序很重要。正如@Shravan 所说,相应地颠倒顺序,它应该可以工作。