Belki diğer tüm cevaplar açısal 2.X içindir.
Şimdi açısal 5.X için çalışmıyor. Onunla çalışıyorum.
sadece NavigationEnd ile, önceki url'yi alamazsınız.
Çünkü Yönlendirici "Navigasyon Başlangıcı", "Rotalar Tanınan", ..., "Gezinme Sonu" arasında çalışır.
İle kontrol edebilirsiniz
router.events.forEach((event) => {
console.log(event);
});
Ama yine de "NavigationStart" ile bile önceki URL'yi alamazsınız.
Şimdi ikili kullanmanız gerekiyor.
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);
});
}
İkili ile, hangi url'nin nereden ve ne olduğunu görebilirsiniz.
"RoutesRecognized", başlangıç noktasından hedef url'ye değişen adımdır.
bu yüzden filtreleyin ve ondan önceki url'yi alın.
Sonuncu ama bir o kadar önemli,
bu kodu üst bileşene veya daha üstüne (ör. app.component.ts) yerleştirin
çünkü bu kod yönlendirme bittikten sonra tetiklenir.
Angular 6+ güncelleme
events.filterFiltre olayların bir parçası değildir, bu yüzden hiç kodunu değiştirmek çünkü hata veriyor
import { filter, pairwise } from 'rxjs/operators';
this.router.events
.pipe(filter((evt: any) => evt instanceof RoutesRecognized), pairwise())
.subscribe((events: RoutesRecognized[]) => {
console.log('previous url', events[0].urlAfterRedirects);
console.log('current url', events[1].urlAfterRedirects);
});