2017-07-09 4 views
1

角度2のボタンまたはrouterLinkを使用してコンポーネント間をナビゲートする方法の例を見つけることができます。特定のコンポーネントに移動するエラーが発生した場合、ユーザーの操作は不要です。このように:HTML要素をクリックすることなく角度2で移動する

class MyErrorHandler implements ErrorHandler { 
    handleError(error) { 
     this.router.navigate(['/pagenotfound']); 
    } 
} 

しかし、MyErrorHandlerコンストラクタのRouterオブジェクトを初期化することはできません。この問題を回避して自動ナビゲーションシステムを作成する方法はありますか?

+0

あなたは角度でルーティングの詳細を学ぶことに興味があるなら、私はここのコースがあります。https://app.pluralsight.com/library/courses/angular-routing無料の週にサインアップしてコースを見ることができます。 – DeborahK

答えて

3

エラーハンドラクラス内でRouterサービスを使用する場合は、それを注入する必要があります。デコレータ@Injectableを使用してサービスを登録すると、これを行うことができます。以下の例を参照してください。

@Injectable() 
export class MyErrorHandler { 
    constructor(private router: Router) { 

    } 

    handleError(error) { 
     this.router.navigate(['/pagenotfound']); 
    } 
} 

これを実行した後、あなたのコンポーネントまたはあなたがそれを使用したい他の場所にあなたのMyErrorHandlerサービスを注入することができます。

依存性注入(DI)の詳細については、以下を参照してください。 https://angular.io/guide/dependency-injection

+0

これは私が問題を解決するのに役立ちましたが、私は注入可能なサービスを注入し、注射器でルータを手に入れました。ありがとう –

関連する問題