Ответ 1
Я думаю, что skipLocationChange
на самом деле работает. Дело в том, что Angular не перешел на новый маршрут, потому что защита не удалась. Если вы хотите захватить неудачный URL-адрес, проверьте параметр route: ActivatedRouteSnapshot
.
Я пытаюсь перейти на страницу с ошибкой пользователя при попытке доступа к недопустимой странице. Проблема в том, что 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);
});
}
Я думаю, что skipLocationChange
на самом деле работает. Дело в том, что Angular не перешел на новый маршрут, потому что защита не удалась. Если вы хотите захватить неудачный URL-адрес, проверьте параметр route: ActivatedRouteSnapshot
.
Проблема заключается в том, что this.route вводится на корневом уровне, поэтому это будет корневой маршрут.
Вы можете перемещаться по маршрутам, чтобы найти тот, в котором вы находитесь.