Можливо, всі інші відповіді стосуються кутових 2.Х.
Тепер це не працює для кутових 5.X. Я працюю з цим.
лише за допомогою NavigationEnd ви не можете отримати попередню URL-адресу.
оскільки маршрутизатор працює від "NavigationStart", "RoutesRecognized", ..., до "NavigationEnd".
Ви можете перевірити у
router.events.forEach((event) => {
console.log(event);
});
Але все-таки ви не можете отримати попередню URL-адресу навіть за допомогою "NavigationStart".
Тепер потрібно використовувати попарно.
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);
});
}
За допомогою попарного ви можете побачити, що таке url від і до.
"RoutesRecognized" - це крок зміни від початкової до цільової URL-адреси.
отфільтруйте його та отримайте попередню URL-адресу.
Не в останню чергу,
помістіть цей код у батьківський компонент або вище (наприклад, app.component.ts)
оскільки цей код спрацьовує після завершення маршрутизації.
Оновіть кутовий 6+
events.filter
Дає помилку , тому що фільтр не є частиною подій, тому змінити код на
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);
});