2016-10-14 7 views
1

からリダイレクト:Angular2こんにちは、私は唯一の静的メソッド(ヘルパー)と "静的クラスのUtilsのを持っている静的メソッド

export class Utils {  
    static doSomethingAndRedirect() { 
     ...doo something... 
     redirectTo->'/home'  
    } 

} 

を、どのようにredirectToコードは次のようになりますか?

+1

ルータへの参照を取得するには、アプリケーションインジェクタへの参照が必要です。静的メソッドを使用しないでください。 –

+0

誰かが私に角度2のない純粋なjsでも答えると満足するでしょう。 Utilsは私のヘルパーSTATICクラスです - 私はそれを変更したくありません。 Redirectinはjsでとても簡単です - angular2に問題がありますか? –

+2

あなたは穀粒に対してAngular2をストロークしようとします。したがって、驚くことはありません;-) Angular2は新しいフレームワークです。 Angular1についてはほとんど何も適用されません。 –

答えて

1

あなたは解決しようとしているユースケースに間違ったアプローチをしています。 ngrx/storengrx/effectsをご覧ください。

要するに、アプリケーションの状態を変更するアクションとレデューサーを定義します。

  • アクション:LoginActionのとLoginSuccessAction
  • 効果:LoginSuccessActionがトリガされ、私の効果のリダイレクト次は、たとえば私のアプリでは、私が持っている、さまざまな副作用(ngrx/effects)と異なるアクションに反応することができます/dashboardにコンポーネント

これは懸念の素敵な分離になります:

  • ビューは、現在の状態を表示し、状態
  • アクションが
  • 減速状態に変わるかを指定アプリで何が起こるかを指定変更ディスパッチアクションが異なるアクションのために発生し
  • 効果はどのような副作用を指定する特定のアクションのために発生し
+0

あなたは私の質問に記載されているケースのためのより具体的な解決策を与えることができますか? - Utils静的クラスでngrxをどのように使うべきですか? –

+1

ngrxは、アプリの状態を管理するための全体的な解決策です。あなたの用途に応じて、過度に使用される可能性があります。小さな、一般的なタスクのためのユーティリティークラスがほしいならば、 'Router'で注入された' UtilityService'はあなたが望むかもしれません。 –

0

最高私のケースで見つけた解決策はちょうど...静的関数の引数リストにパラメータ 'router'を追加する:

static doSomethingAndRedirect(router) { 
    ...doo something... 

    router.navigateByUrl('home'); // redirect 
} 

これは静的ヘルパーの利便性と非静的な "角度の道"です。

関連する問題