web-dev-qa-db-ja.com

子パラメータも使用している場合は、redirectToを使用しますが、これは可能ですか?

あなたはおそらくすでに最新の@angular/router 3.0.0-rc.1redirectToパラメータも使用する場合、childrenパラメータを使用することはできません。

しかし、確かに場合によっては、これは私の場合のように必要なものです。たとえば、私が欲しいのは、親ルーターへのすべての要求を最初の子にリダイレクトすることです。

これが私のルーターです:

{
    path: 'project/:id',
    component: ProjectComponent,
    children: [
      {
        path: 'properties',
        component: ProjectPropertiesComponent
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }

project/:idルートは、私の場合、最初の子(properties)にリダイレクトされます。

これはどういうわけか可能ですか?

私がこのようにしようとすると:

{
    path: 'project/:id',
    component: ProjectComponent,
    redirectTo: 'properties',
    children: [
      {
        path: 'properties',
        component: ProjectPropertiesComponent,
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }

もちろんこのエラーが発生します:

例外:エラー:ルート 'project /:id'の構成が無効です:redirectToと子を一緒に使用することはできません

24
Vassilis Pits

空の子ルートが仕事をするはずです:

  {
    path: 'project/:id',
    component: ProjectComponent,
    children: [
      {
        path: '',
        redirectTo: 'properties',
        pathMatch: 'full'
      },
      {
        path: 'properties',
        component: ProjectPropertiesComponent,
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }
63
j2L4e

j2L4eの答えは正しいですが、「pathMatch」タイプを「prefix」に設定することも強制されました。

pathMatch: 'prefix'

  {
    path: 'project/:id',
    component: ProjectComponent,
    children: [
      {
        path: '',
        redirectTo: 'properties',
        pathMatch: 'prefix'
      },
      {
        path: 'properties',
        component: ProjectPropertiesComponent,
      },
      {
        path: 'stats',
        component: ProjectStatsComponent
      }
    ]
  }
2
user2735883