2017-05-19 3 views
6

다른 곳의 경우에는 사과하지만 일반적인 검색 방법은 실패합니다.Angular2 경로를 유지하는 동안 오류 페이지를 표시하는 방법

API에서 500을 받으면 맞춤 오류 페이지를 표시하고 싶습니다. 내가 사용 restangular을 사용하고 내가 500를받을 때 오류 페이지로 리디렉션 응답 인터셉터이있어 :

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

이 모든 일을. 그러나 브라우저 탐색 모음에 이전 URL을 유지하여 사용자가 새로 고칠 때 이전 페이지를 다시 시도하는 반면 지금은 다시 시도하기 위해 끊어진 페이지로 다시 이동해야합니다.

감사합니다.

답변

1

직접적인 방법은 없습니다. 하지만 오류 페이지로 리디렉션하고 localStorage의 이전 페이지를 저장하거나 매개 변수를 요청하면 /error?page=redirectUrl을 요청할 수 있습니다.

새로 고칠 때보 다 param 값 또는 localStorage 데이터를 사용하여 해당 페이지를 다시 탐색합니다.

+0

확인을 구현 감사 - 나는 그럴거야. –

+0

probs 없음. 기꺼이 도움이 될 것입니다. –

-1

오류 발생시 렌더링하는 ErrorComponent를 만들어야합니다. 성공 또는 오류가 발생하면 구성 요소를 스왑해야합니다.

이 당신이를 추가 할 수 있습니다

try { 

} 
catch (e) { 

} 
1

와 공유 구성 요소 당연히이다

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

하고, AppModule 생성자에서 setRouteErrorHandler() 전화를 걸거나 자신의 APP_INITIALIZER

+0

네,이게 아름답게 작동했습니다 - 고마워요! –