Angulrで開発をしているのですが、BehaviorSubjectが思うように動きません
以下のようなサービスとコンポーネントがあります
トップページのコンポーネントで新しいItemオブジェクトを作成し、次にトップページに戻るまでそのオブジェクトは全コンポーネントで共有され、更新された場合も全コンポーネントに通達するようにしたいです。
トップページに戻るとそのItemオブジェクトにnullが挿入され、オブジェクトがリセットされるイメージです
上記のような実装はできているのですが、
ある特定のページからポップアップするモーダルで値を更新して、トップページに戻り、またそのページにいくと、過去の情報が残ってしまっています。
トップページではOnInitでBehaviorSubjectにnextでnullを流しているのに、更新されないのは何故でしょうか。
基本的にサービスと各コンポーネントは以下の図のような情報のやりとりをします。
- サービス
item : アプリ全体で共有する
BehaviorSubject : itemの変更を各コンポーネントに通達する
update() : 現状のitemをBehaviorSubjectに流す
method_a(arg) : 引数に応じてitemを更新し、update()を呼び出す
method_b, method_c, ... : method_aと同様の動きをする
- コンポーネント
_item : HTMLに表示するitem
ngOinit : サービスのBehaviorSubjectをsubscribeして_itemに入れる
method(arg) : HTML等での入力値を引数にサービスのmethod_a()を呼び出す
同様の動きをするコンポーネント(モーダル含む)が役割ごとに複数ある
あなたの回答
tips
プレビュー