問題タブ [rxjs-subscriptions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 角度のパラメーター変更ですべてのサブスクリプションのサブスクライブを解除する方法
ジョブのジョブの詳細を表示できるページを開発しています。この目的のために、NGRXストアを使用してアクションをディスパッチし、それをサブスクライブして以下のようなデータを表示しています
ngondestroy では、以下のようにすべてのサブスクリプションのサブスクリプションを解除しています。
これは正常に機能していますが、ジョブのリストを含むサイドナビメニューがあり、各ジョブをクリックすると、クリックされたジョブの詳細でジョブの詳細ページが更新されます。ここでは、各ジョブをクリックすると、最初のサブスクリプションが何度も発生し、ディスパッチ API が複数回呼び出されます。これは、以前のジョブ サブスクリプションのサブスクリプションを解除できないためです。
パラメータの変更時にその特定のコンポーネントのすべてのサブスクリプションのサブスクライブを解除するにはどうすればよいですか、またはこの問題を解決できる他の方法があります。助けていただければ幸いです、ありがとう!!!
angular - Router サブスクリプション内で subscribe メソッドを呼び出すときは、ActivatedRoute からサブスクリプションを解除する必要がありますか?
Router
通常、次の理由により、またはActivatedRoute
明示的に購読を解除する必要はないことを読みました。
ActivatedRoute とそのオブザーバブルは、ルーター自体から隔離されています。Router はルーティングされたコンポーネントが不要になったときにそれを破棄し、注入された ActivatedRoute も一緒に終了します。
ソース: ActivatedRoute (例: params) オブザーバブルからサブスクライブを解除する必要がありますか?
ただし、親コンポーネントsubscribe()
で繰り返し呼び出しています。このコンポーネントは、ユーザーが Web アプリケーションから移動するか、Web サイトを閉じたときにのみ破棄されるため、これらのサブスクリプションがずっとアクティブなままになるのではないかと心配しています。ActivatedRoute.firstChild.paramMap
app.component
paramMap
サブスクリプション呼び出しはサブスクリプション内で行われ、Router.events
次のようになります。
誰かが別のコンポーネント/ページに移動するたびactivatedRoute.firstChild.paramMap
に、再度サブスクライブされます。これはルーター サブスクリプション内で行う必要があり、イベントが のインスタンスである場合にのみ行う必要があります。これNavigationEnd
は、その前に URL パラメーターがまだ使用できないためです。
私の質問は、これらのサブスクリプションはどうなりますか? 彼らは自動的に購読を解除しますか、それとも新しいものごとに手動で購読を解除する必要がありますか? 後者の場合、どうすれば効果的にそれを行うことができますか?
activatedRoute.firstChild.snapshot.paramMap.myParameter
何もサブスクライブする必要がないので、使用するようにアドバイスする人もいるかもしれません。ただし、snapshot
同じコンポーネントを再利用しているときに url パラメータが変更された場合は機能しません。だから私はそれを使用することはできません。
ありがとうございました