2017-05-10 2 views
3

J'ai un composant délégué qui ne fait rien d'autre que résoudre un objet par l'ID d'un chemin (par exemple /tournament/:id), en détectant le type de tournoi et en le redirigeant (via router.navigate(..)) vers un autre itinéraire (par exemple /tournament/:id/league)Bouton retour navigateur Angular2 après la redirection

Le problème est que le bouton de retour du navigateur reviendrait au composant de délégation et afficherait le modèle vide de mon composant de délégation.

Y at-il d'autres options pour transmettre à un autre composant que router.navigate considérant ce qui suit:

  1. Browser bouton retour ne sauterais pas à la composante délégante
  2. La route /tournament/:id/league devrait se refléter dans l'URL du navigateur

Répondre

1

J'ai trouvé une solution de contournement, en espérant que quelqu'un trouve quelque chose de plus sophistiqué, car cet extrait doit être placé dans chaque composant.

Il est placé dans le constructeur et vérifie si la nouvelle route est celle du composant délégué. Si c'est le cas, redirigez vers un autre itinéraire.

_location.subscribe(loc => { 
    let routeOfDelegatingComponent = "...."; 
    if (loc.url === routeOfDelegatingComponent) { 
    router.navigate(['/acustomroute']); 
    } 
});