web-dev-qa-db-fra.com

Utilisez redirectTo si vous utilisez également le paramètre children, est-ce possible?

Comme vous le faites probablement déjà dans le dernier @angular/router 3.0.0-rc.1, vous n'êtes pas autorisé à utiliser le paramètre redirectTo si vous utilisez également le paramètre children.

Mais il est certain que dans certains cas, il s’agit de quelque chose dont vous avez besoin, comme dans mon cas… .. Par exemple, ce que je veux, c’est rediriger vers le premier enfant toutes les demandes adressées au routeur parent.

Voici mon routeur:

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

Je veux que tous ceux qui vont à la route project/:id soient redirigés vers le premier enfant (properties) dans mon cas.

Est-ce possible d'une certaine manière?

Si j'essaye comme ça:

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

Je reçois bien sûr cette erreur:

EXCEPTION: erreur: configuration non valide de la route 'projet /: id': redirectTo et les enfants ne peuvent pas être utilisés ensemble

17
Vassilis Pits

Une route enfant vide devrait faire le travail:

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

la réponse de j2L4e est correcte, mais j'ai également été obligée de définir le type 'pathMatch' comme 'préfixe'.

pathMatch: 'préfixe'

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