Peut-être que toutes les autres réponses sont pour angular 2.X.
Maintenant, il ne fonctionne pas pour angular 5.X. Je travaille avec.
avec seulement NavigationEnd, vous ne pouvez pas obtenir l'url précédente.
car Router fonctionne de "NavigationStart", "RoutesRecognized",..., à "NavigationEnd".
Vous pouvez vérifier auprès de
router.events.forEach((event) => {
console.log(event);
});
Mais vous ne pouvez toujours pas obtenir l'url précédente même avec "NavigationStart".
Maintenant, vous devez utiliser la méthode par paire.
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/pairwise';
constructor(private router: Router) {
this.router.events
.filter(e => e instanceof RoutesRecognized)
.pairwise()
.subscribe((event: any[]) => {
console.log(event[0].urlAfterRedirects);
});
}
Avec pairwise, vous pouvez voir quelle url est de et vers.
"RoutesRecognized" est l'étape de changement de l'url d'origine à l'url cible.
alors filtrez-le et récupérez l'url précédente.
Le dernier mais non le moindre,
ce code met le composant parent ou supérieur (ex, app.component.ts)
parce que ce code se déclenche après la fin du routage.