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.

Relaterte artikler