2017-05-19 9 views
6

これが他の場所にある場合は謝罪しますが、通常の検索方法は失敗しました。Angular2経路を維持しながらエラーページを表示する方法

私はAPIから500を受け取ったときにカスタムエラーページを表示したいと思います。私が使用して、restangularを使用して、私は500を受信したときにエラーページにリダイレクト応答インターセプタを持っている:

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

このすべての作品を。しかし、ブラウザのナビゲーションバーに前のURLを保存しておきたいので、ユーザーが更新したときに前のページを再試行するのに対し、今は壊れたページに再度移動して再試行する必要があります。

ありがとうございます!

答えて

1

これを行う直接的な方法はありません。 しかし、エラーページにリダイレクトして、前のページをlocalStorageに保存するか、または私にparam /error?page=redirectUrlをリクエストすることができます。

リフレッシュすると、そのパラメータ値またはlocalStorageデータを使用してそのページに再びナビゲートします。

+0

OKを実装おかげで - 私は、それを行うでしょう。 –

+0

probsはありません。喜んでそれが助けになるでしょう。 –

-1

エラーが発生したときに、正常に実行されたかエラーが発生したときにコンポーネントをスワップするだけのErrorComponentを作成する必要がありました。

これは、あなたがこれを追加することができます

try { 

} 
catch (e) { 

} 
1

と共有コンポーネントofcourseのです:

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

これは美しく働いた - ありがとう! –

関連する問題