2017-05-19 10 views
6

Xin lỗi nếu đây là nơi khác, nhưng chiến thuật tìm kiếm thông thường của tôi đã thất bại.Angular2 Cách hiển thị trang lỗi trong khi vẫn giữ đường

Tôi muốn hiển thị trang lỗi tùy chỉnh khi tôi nhận được 500 từ API. Tôi đang sử dụng restangular và có một đánh chặn phản ứng mà chuyển hướng đến trang báo lỗi khi tôi nhận được 500, sử dụng:

this.router.navigate(['/error']);

này tất cả các công trình. Tuy nhiên, tôi muốn giữ URL trước đó trong thanh điều hướng trình duyệt để khi người dùng làm mới, hãy thử lại trang trước, trong khi ngay bây giờ họ phải điều hướng lại trang bị hỏng để thử lại.

Cảm ơn!

Trả lời

1

Không có cách nào trực tiếp để thực hiện điều đó. Nhưng bạn có thể chuyển hướng đến trang lỗi và lưu trang trước đó trong localStorage hoặc đặt nó tôi yêu cầu thông số /error?page=redirectUrl.

Hơn khi bạn làm mới, bạn điều hướng đến trang đó một lần nữa bằng cách sử dụng giá trị tham số đó hoặc dữ liệu localStorage.

+0

OK, cảm ơn - Tôi sẽ làm điều đó. –

+0

Không có probs. Vui mừng nó sẽ giúp. –

-1

Tôi cần phải tạo một ErrorComponent làm lỗi, chỉ cần hoán đổi thành phần khi thành công hoặc lỗi.

Đây là ofcourse một thành phần chia sẻ với một

try { 

} 
catch (e) { 

} 
1

Bạn có thể thêm này:

setRouteErrorHandler(): void { 
    let errorRoute = null; 

    this.router.errorHandler = (error): void => { 
     this.location.go(errorRoute.url); 
     this.router.navigate(['/error'], { skipLocationChange: true, replaceUrl: true }); 
    }; 

    this.router.events 
     .filter((next) => next instanceOf NavigationError) 
     .subscribe((next) => { 
      errorRoute = next; 
    }); 
} 

và gọi setRouteErrorHandler() từ AppModule constructor hoặc thực hiện của riêng bạn APP_INITIALIZER

+0

Yep điều này làm việc rất đẹp - cảm ơn! –

Các vấn đề liên quan