2017-02-28 3 views
0

こんにちはパスのナビゲーションをAngularのカスタム例外ハンドラに追加しましたが、エラーがAngularコンポーネントのonInitでトリガされたときにエラーループに入ります。カスタムエラーハンドラでrouter.navigateを使用したときのエラー

エラー:

import { ErrorHandler, Injectable, Injector } from '@angular/core'; 
import { Router, ActivatedRoute } from '@angular/router'; 

@Injectable() 
export class ErrorService implements ErrorHandler { 

    constructor(
    private injector: Injector 
) { } 

    get router(): Router { 
    return this.injector.get(Router); 
    }; 


    handleError(error: any): void { 
    console.error(error); 
    this.router.navigate(['error', { error: error }], { skipLocationChange: true}); 
    } 

} 

そして、これらの私のルート:

これは私のコンポーネントのコードで既に起動アウトレット

をアクティブにすることはできません

アイデア?ありがとうございました!

+1

あなたは「エラーはのOnInitにトリガされたとき」とはどういう意味ですか?どのコンポーネントでどのようなエラーが発生しますか? –

+0

ここに例があります:if(undefined === this.items){ 新しいエラーをスローする( 'Attribute items is required'); }。コンポーネントのOnInitでは、入力に値があることを制御します。 –

+0

同じ問題が発生しました.OnInitで投げられたエラーは、サブスクライバの登録を解除できないコンポーネント(サードパーティ)この問題に? – jonas

答えて

1

私はついにこれを動作させました。角度

handleError(error: any): void { 
    console.error(error); 
    setTimeout(() => this.router.navigate(['error', { error: error }], { skipLocationChange: true})); 
    } 

  • :4.4.4
  • 角度-CLI 私のソリューションは、あなたのための私の解決策は、次のようになりますので、のsetTimeout()関数内でナビゲートコールをカプセル化することでした。 1.4.6
  • 活字体:2.5.3
関連する問題