2016-11-25 2 views
0

Je me gratte la tête depuis hier et je n'arrive pas à résoudre mon problème. J'ai un parent: composant de tableau de bord, qui comprend un en-tête de page et des listes déroulantes. Mon composant enfant contient d'une seule ligne pour le moment: "Child Component! Chosen value from dropdown list: "Some value"". Veuillez regarder les images ci-dessous.Angulaire 2 enfant et parent (webpack, TS, Angular 2 final)

La communication fonctionne correctement, mais j'ai des problèmes lors de la navigation vers le tableau de bord.

Mes itinéraires ressemble à ceci:

{ 
    path: 'admin', 
    component: AdminComponent, 
    children: [ 
     { 
      path: '', 
      component: AdminComponent, 
     }, 
     { 
      path: 'something/:name', 
      component: TestComponent, 
     }, 
    ] 
}, 

Dans le cas où je ne pas ajouter:

 { 
      path: '', 
      component: AdminComponent, 
     }, 

dans l'itinéraire des enfants, je reçois l'erreur:

Uncaught (in promise): Error: Cannot match any routes: 'admin' 
Error: Cannot match any routes: 'admin' 

Mais aussi signifie que lorsque j'ai ajouté cela chez les enfants, la vue parent est affichée deux fois. Tout va bien quand je choisis un élément de la liste déroulante, qui déclenche la vue enfant, la vue ressemble à ce qu'elle devrait, vue parent avec des listes déroulantes et la ligne de texte enfant.

J'ai essayé de changer les lignes chez les enfants la route:

children: [ 
     { 
      path: '', 
      component: AdminComponent, 
     }, 
     { 
      path: 'something/:name', 
      component: TestComponent, 
     }, 
    ] 

à:

children: [ 
     { 
      path: '', 
      redirectTo: 'admin', 
     }, 
     { 
      path: 'something/:name', 
      component: TestComponent, 
     }, 
    ] 

Mais il ne fonctionne pas

+0

Pouvez-vous s'il vous plaît fournir un Plunker avec votre code? –

+0

Childeren et parent 'component' sont les mêmes que' DashboardComponent', ne pensez pas que cela provoquera une boucle infinie? –

+1

@PankajParkar routage et le composant peut être vu séparément. seulement s'il y a une certaine redirection se produisant dans le 'DashboardComponent' cela devrait fonctionner .. Pas comme prévu cependant, mais cela fonctionne;) – PierreDuc

Répondre

1

changement à ceci:

children: [ 
     { 
      path: '' 
     }, 
     { 
      path: 'something/:name', 
      component: TestComponent, 
     }, 
] 

Cela va juste rendre non chose dans votre router-outlet sur un chemin vide. Une autre option pourrait être de rediriger le chemin vide vers something et d'avoir un composant d'espace réservé qui dit: 'choisissez une maladie'.

+0

Parfait !! C'est facile, lol. Oui, cela a résolu mon problème, génial, merci! – Alex