2016-10-03 3 views
3

私はangular2アプリケーションを安定リリース(rc1)にアップグレードし、ルートパラメータが変更されたときにngOnDestroyが起動しないことに気付きました。ルートパラメータの再利用コンポーネントを無効にする

以前のバージョンでは、URLをmatch/123からmatch/124に変更すると、onDestroyが呼び出され、いくつかのクリーニング(例:特定の一致の場合はwebsocketからの登録解除)ができました。

この新しい動作では、同じことを行う最善の方法は何かわかりません。コンポーネントを強制的に再初期化することはできますか?

これは、親構造であり、かつコンポーネントがcanReuseのサポートを持参する計画がありwi​​thingルータ-outled

<div id="content"> 
     <live-sidebar-component></live-sidebar-component> 

     <div id="page-wrapper"> 

     <live-breadcrumbs></live-breadcrumbs> 

     <div id="page"> 
      <router-outlet></router-outlet> 
     </div> 
     </div> 

     <div id="promobar"> 
     <ticket-component></ticket-component> 
     </div> 
    </div> 

答えて

1

レンダリングされます言及しました。

詳細はhttps://github.com/angular/angular/issues/7757#issuecomment-236737846を参照してください。あなたがのparamsの変更をサブスクライブし、代わりにそこにクリーンアップを行うことができます回避策として

constructor(public route: ActivatedRoute) { 
    this.params = this.route.params.subscribe(
     params => { 
     // do cleanup 
     console.log(params['someParam']); 
     } 
    ); 
    } 
+0

おかげで、私はそれについて考えました。しかし、別の試合に移ってしまえば、前回との契約解除を希望しますが、以前のルートパラメータに関する情報はありません。それは可能なのですか、それともクラスプロパティに保持する必要がありますか? – Ned

+0

私はあなたがそれを保存する必要があると確信しています。しかし、この場合、 'ngOnDestroy()'を呼び出さなければなりません。 –

+0

OK、それから私はそれを保存します。 'このケースではngOnDestroyを呼び出さなければならないのですか? 'どのような場合(私はプロパティのルートを格納する場合)?なぜngOnDestroyを呼び出すことが重要ですか? – Ned

関連する問題