2016-04-22 8 views
9

:私は別のコンポーネントにビューを変更し、戻ってきたときにコンポーネント内でonDestroyを登録するたびに購読を解除する必要がありますか?私はこのような私のコンストラクタでストリーミングするために購読している場合、私は疑問に思って

_eventEmitterService.event.subscribe((msg)=>{}) 

ので、イベントはそのストリームから2回トリガされます。 ngOnDestroyを使用して、コンポーネントを変更するたびに購読を解除する必要がありますか?

ありがとうございました

+1

はいあなたは:

は、ソースコード内の行を参照してください。私はドキュメントに記載されているリンクをあなたに渡しましたが、それ以上見つけることができません – PierreDuc

答えて

12

見つかりました。そして、はい、ドキュメントごとにangular2 lifecycle-hookガイドに記載されているように:ちょうど角の前に

ngOnDestroy
クリーンアップは、指令/コンポーネントを破壊します。観測漏れを解約し、イベントハンドラを切り離してメモリリークを回避します。

そうです、あなたはピエールの偉大な答えにngOnDestroy()

5

ただ、追加のヒントの観測からの退会する必要があります。 asyncパイプは、適用されたオブザーバブルを自動的に登録解除します。だから、自分で管理しているオブザーバブルを購読解除する必要があります。

+0

Githubのリンクが死んでいます。あなたはもう少し拡張することができます、あなたの答えは少しピエールに矛盾するようです、私は手動でクリーンアップする必要があるとき私は不安ですか?角度のある公式チュートリアルでは、私が見る限り、クリーンアップはありません。 – Davor

関連する問題