Ich habe die folgende Konfiguration von Routen:Immer die richtige URL im Router-Ereignissen
{ loadChildren: './public#PublicModule', path: '' },
{ loadChildren: './home#HomeModule', path: 'home' },
{ path: '**', redirectTo: '/404' }
In einiger Vorlage (wenn es darauf ankommt, die es nennt sie xxx.component.html) ich eine Taste erstellt machen einige Tests in meiner 404 Route:
<button type="button" routerLink="unknown">Click here for unknown</button>
Damit bin ich in Route home/xxx
und nach drücken der Taste, es funktioniert, ich meine es auf Seite 404 geht, jedoch, wird die folgende für m zurück e:
NavigationEnd {id: 2, url: "/home/unknown", urlAfterRedirects: "/404"}
Aber ich erwarte die REAL vorherige Route (home/xxx
) zu bekommen, nicht die URL, die ich in meiner Schaltfläche. Gibt es einen Weg, dies zu erreichen?
PS1: Ich habe versucht, pairwise
zu verwenden, aber es funktioniert nur, nachdem die Route 404 2 Mal aufgerufen.
Meine 404 Komponente wie folgt aussieht:
export class NotFoundErrorComponent {
public previousUrl: string;
constructor(
private router: Router
) {
this.router.events
.filter((event: any) => event instanceof NavigationEnd)
.subscribe((event: any) => {
console.log(event);
// this.previousUrl = event.url;
});
}
...
}
vielleicht "NavigationStart" -Ereignis verwenden? –
@Maximus das Ereignis ist nicht das Problem. Ich habe den 'Filter' komplett entfernt und es gibt mir nicht die REAL URL, von der er kommt. Tatsächlich, IMHO, ist es zu kompliziert, mit Routen in Angular zu arbeiten. Eine einfache Sache, wie die letzte besuchte Route zu nehmen ist zu kompliziert. –