Frage Die Async-Auflösung für die angular 2-Route führt nicht zur Navigation des Standorts


Ich versuche den Benutzer zur Fehlerseite zu navigieren, wenn ich auf die nicht erlaubte Seite zugreifen möchte. Das Problem ist, dass der SkipLocationChange in diesem Fall nicht funktioniert. Es navigiert zur Fehlerseite, aber die URL ändert sich in den Stamm. Wie wird der ursprüngliche URL-Benutzer beibehalten?

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);
    });
} 

15
2017-12-18 15:43


Ursprung


Antworten:


Ich denke skipLocationChange arbeitet tatsächlich. Die Sache ist, dass Angular nicht zur neuen Route navigiert ist, weil die Wache versagt hat. Wenn Sie die fehlerhafte URL erfassen möchten, überprüfen Sie die route: ActivatedRouteSnapshot param.


1
2017-12-23 13:58



Das Problem ist, dass diese Route auf der Root-Ebene injiziert wird, so dass es die Root-Route ist.

Sie können die Routen durchqueren, um die Route zu finden, in der Sie sich befinden.


0
2017-12-22 03:19