2017-10-09 2 views
0

Je code suivantangulaire 2 composants itinéraire, non rechargeant

{ 
    path: 'clientReports', 
    component: ClientsRootComponent, 
    children: [ 
     { 
      path: ':reportId', 
      component: ClientsReportComponent,   
      children: [ 
       { 
        path: ':countryId/:branchId', 
        component: ClientsGridComponent,      
       } 
      ] 
     } 
    ] 
} 

et liens suivants

app/clientReports/1/1/1 
app/clientReports/2/1/1 
app/clientReports/3/1/1 

Chaque fois que je clique sur un lien, je peux voir que ClientsReportComponent ne rechargent pas et au lieu existant sont réutilisées et m'a causé un problème avec la durée de vie des services déclarés dans les fournisseurs de ce composant.

ne doit pas être la composante ClientsReportComponent rechargées chaque fois qu'un nouveau lien est cliqué?

Répondre

1

Oui, Si vous êtes déjà dans un même composant, il reload wont le composant. Si vous voulez faire quelque chose sur route param modifie le composant que vous êtes déjà, alors vous devez vous abonner pour les changements queryParam/routeparam.

S'il vous plaît trouverez ci-dessous lien pile

Router Param Changes

+0

ClientsRootComponent a des services injectés que je dois détruire et réutiliser. Ainsi, la réutilisation du composant est essentielle pour moi – pantonis

+0

Dans ce cas, vous ne pouvez pas utiliser EventEmitter et vous abonner du composant parent? – rijin

+0

Existe-t-il un moyen de contourner ce problème? – pantonis