【问题标题】:Angular submodules children routes not working. Cannot match any routesAngular 子模块子路由不起作用。无法匹配任何路由
【发布时间】:2019-03-28 09:24:09
【问题描述】:

在创建带有子路由的模块并尝试在它们之间导航时遇到此错误。

app-routing.module.ts

const routes: Routes = [
   { path: '', pathMatch: 'full', redirectTo: '/login' },
   { path: 'login', component: LoginComponent },
   { path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule', 
     canActivate: [AuthGuard] },

app/admin/admin-routing.module.ts

 const routes: Routes = [
  {
    path: "",
    redirectTo: "welcome",
    pathMatch: "full"
  },
  {
    path: "",
    component: AdminComponent,
    children: [
  {
    path: "welcome",
    component: WelcomeComponent
  },
  {
    path: "challenge/leaders",
    component: ChallengeLeadersComponent
  },
  {
    path: "challenge/collaborators/:id",
    component: ChallengeCollaboratorsComponent
  },
 ]}
];

app/admin/components/challenge/challenge-leaders.html

  <a [routerLink]="['challenge/collaborators', user.id]">

我得到的错误是

错误:无法匹配任何路由。 URL 段:'admin/challenge/leaders/challenge/collaborators/ab5738'

【问题讨论】:

    标签: angular typescript routing


    【解决方案1】:

    这是因为您为 /admin 指定了两条空路由,即 redirectTo welcome 和 其他用于 AdminComponent。相反,您的第一个空路线应该在 children 数组中,并且您没有指定任何挑战路线。挑战/领导者应该在挑战的孩子中。

    const routes: Routes = [
      {
        path: "",   // This is /admin
        component: AdminComponent,
        children: [
      {
        path: "welcome",  // This is /admin/welcome
        component: WelcomeComponent
      },
      {
        path: "challenge",  // This is /admin/challenge
        component: ChallengeComponent,
        children: [
         { path: 'leader', component: ChallengeLeaderComponent }, // This is /admin/challenge/leader
         { path: 'collaborators', component: ChallengeCollaboratorsComponent }, // This one is /admin/challenge/collaborators
         { path: 'collaborators/:id', component: ChallengeCollaboratorComponent }, // This one is /admin/challenge/collaborators/someId
         { path: '', redirectTo: 'leader', pathMatch: 'full' }
       ]
      },
      {
        path: "",
        redirectTo: "welcome",
        pathMatch: "full"
      }
     ]}
    ];

    【讨论】:

    • 这行得通!谢谢,我只需要将 routerLink 更改为
    【解决方案2】:

    您好,您的路由器链接有问题。您的错误显示为 "错误:无法匹配任何路由。URL 段:'admin/challenge/leaders/challenge/collaborators/ab5738'"

    路径应该是“admin/challenge/collaborators/ab5738”而不是“admin/challenge/leaders/challenge/collaborators/ab5738”

    您可以将路由器链接设置为绝对或相对路径; 您可以查看此答案以获得更多说明。 https://stackoverflow.com/a/38216918/1506955

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 2022-01-25
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2017-12-12
      • 2020-01-13
      • 1970-01-01
      相关资源
      最近更新 更多