javascript - Angular 2-rute asynkron oppløsning holder ikke plasseringen ved navigering
Jeg prøver å navigere brukeren til feilsiden når de prøver å få tilgang til en ikke tillatt side. Problemet er at skipLocationChange ikke fungerer i dette tilfellet. Den navigerer til feilsiden, men URL-en endres til roten. Hvordan kan jeg beholde den opprinnelige URL-en brukeren oppga?
resolve(route: ActivatedRouteSnapshot): Observable<any|boolean>|boolean {
return this.apiclientService.get('cars/' + route.params['id']).map(
response => {
if (response.data.user_id === this.authService.user().id) {
return response.data;
}
this.router.navigate(['/404'], { skipLocationChange: true });
return false;
}
).catch(error => {
this.router.navigate(['/404'], { skipLocationChange: true });
return Observable.of(false);
});
}
Svar #1
Jeg tror skipLocationChange faktisk fungerer. Saken er at Angular ikke navigerte til den nye ruten fordi vakten feilet. Hvis du vil fange den feilede URL-en, inspiser route: ActivatedRouteSnapshot-parameteren.
Svar #2
Problemet er at this.route injiseres på rot-nivå, så det vil være rot-ruten.
Du kan gå gjennom rutene for å finne den du er interessert i.