2016-10-11 2 views
0

私はangular2 RC4アプリケーションで作業していて、私は何か変わったことに気付き始めました。 は、私は私ができるバンチコンポーネントルートにありますAngular2コンポーネントが何の理由もなく2回リロードされます

Parent(A) - ManyChildren(B,C,D,E) 

マイ成分AがIDを取得し、サービスへの交渉は、アイテムを取得し、状態を更新します。他のコンポーネントはBehaviorSubjectsで状態 "selectedItem"をリッスンします。

path: ':id/steps', 

全く新しいリロード(新しいウィンドウ)としてURLでナビゲートしようとすると、予測できない動作を除いてすべてが機能します。

ページを完全にリロードしようとすると(ユーザーがページをブックマークしたいと仮定して)、正しいページにルーティングされ、すべての値が適切に設定されます。 しかし、同じツリーにナビゲートしようとすると、コンポーネントAは再びAGAINをリロードします。

私は

localhost/items/1/steps/step1 

親コンストラクタの実行に行くだろう。私が行くように

localhost/items/1/steps/step2 

親親コンストラクタは再び実行されます。これは本当に私のコンポーネントが一度だけ正確に一度ロードされることを期待しているので、私にとっては受け入れられないものです。何か不足していますか?(RC4)

+0

ルートと上記のコンポーネントコードを追加してください。 – Sefa

+0

angle2リリースまたはalpha/rcを使用していますか?ルータが多くのバージョンと以前のバージョンを変更したため(現在のバージョンはv3と呼ばれています)、バグがありました。 – bertrandg

+0

親Aのコンストラクタが再度実行されていることをどのように知っていますか? – sabithpocker

答えて

0

この動作の理由はわかりません。おかしいです。 しかし、ドキュメントはhttps://angular.io/docs/ts/latest/guide/lifecycle-hooks.htmlに言うように、あなたがngOnInitにあなたのサービスロジックを維持する必要があります()の代わりにコンストラクタの:

は、コンポーネントのコンストラクタでデータを取得しないでください。新しいコンポーネントが、テスト中に作成されたときまたは表示する前に、リモートサーバーに接続しようとすることを心配する必要はありません。コンストラクターは初期のローカル変数を単純な値に設定するだけで済みません。

あなたの問題を解決するかどうかわかりません。試してみてください。

+0

すべての基礎となるコンポーネントのコードをngOnInit()に移動しました。同じ動作です.ngOnInit()はルートからIDを取得していたコンポーネントに対して2回実行されました – ZeroCool

0

ここでWhy does my angular2 app initialize twice?別のユーザーは、AppComponentを既定のルートとして構成したため、同じ動作をします。多分あなたの問題はこれに似ていますか?あなたの問題を理解し解決するための情報はほとんどありません。

0

しばらくしてエラーが見つかりました。私たちはまだRC4にいるので、ビルドシステムをセットアップしていたときに、WebPackでいくつかの遅延ロードを設定しました。 何らかの理由で、リロードの原因となっていました。

 path: 'clients', 
     component: 'ClientsComponent', 
     //canActivate: [WebpackAsyncRoute], << THIS LINE // Async components with children routes must use WebpackAsyncRoute 
     children: [ 
関連する問題