javascript - Angular 2 route async resolve không giữ vị trí khi điều hướng
Tôi cố gắng điều hướng người dùng đến trang lỗi khi họ cố truy cập trang không được phép. Vấn đề là skipLocationChange không hoạt động trong trường hợp này. Nó điều hướng đến trang lỗi nhưng URL thay đổi thành trang gốc. Làm thế nào để giữ URL gốc mà người dùng đã cung cấp?
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);
});
}
Câu trả lời #1
Tôi nghĩ skipLocationChange thực sự đang hoạt động. Vấn đề là Angular không điều hướng đến tuyến đường mới vì guard thất bại. Nếu bạn muốn nắm bắt URL thất bại, hãy kiểm tra tham số route: ActivatedRouteSnapshot.
Câu trả lời #2
Vấn đề là this.route được tiêm tại cấp gốc nên nó sẽ là tuyến gốc.
Bạn có thể đi qua các tuyến đường để tìm tuyến mà bạn quan tâm.