Подтвердить что ты не робот

Angular 2 решение async для маршрута не сохраняет местоположение при навигации

Я пытаюсь перейти на страницу с ошибкой пользователя при попытке доступа к недопустимой странице. Проблема в том, что skipLocationChange не работает по этому поводу. Он переходит на страницу с ошибкой, но URL-адрес изменяется на корень. Как сохранить исходный пользователь url?

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

Ответ 1

Я думаю, что skipLocationChange на самом деле работает. Дело в том, что Angular не перешел на новый маршрут, потому что защита не удалась. Если вы хотите захватить неудачный URL-адрес, проверьте параметр route: ActivatedRouteSnapshot.

Ответ 2

Проблема заключается в том, что this.route вводится на корневом уровне, поэтому это будет корневой маршрут.

Вы можете перемещаться по маршрутам, чтобы найти тот, в котором вы находитесь.