Próbuję przejść użytkownika do strony błędu podczas próby uzyskania dostępu do niedozwolonej strony. Problem polega na tym, że funkcja skipLocationChange nie działa w tym przypadku. Przechodzi do strony błędu, ale adres URL zmienia się w katalog główny. Jak zachować oryginalny adres URL użytkownika?Rozgałęzienie asynchroniczne z 2 kątami nie utrzymuje położenia w nawigacji
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);
});
}
Dlaczego nie używasz strażników? https://angular.io/docs/ts/latest/guide/router.html#!#guards Nie jestem pewien, czy to naprawi twój problem, ale myślę, że to jest dokładnie to, po co są strażnicy. –
Próbowałem straży (canActivate), ale problem jest taki sam + nie można przekazać danych do kontrolera, jak możemy z postanowieniem. Jeśli masz jakiś przykład, doceniam. – izupet
Niestety, jakoś założyłem, że twój kod jest w komponencie. "Zdecydowanie" jest tym, co miałem na myśli. Plunker, który pozwala na reprodukcję, byłby świetny także do zobaczenia tras. –