2017-12-29 38 views
0

私は角型のアプリケーション(v5)を持っています。ページの1つに2つのコンポーネント(AとB)があります。コンポーネントAにはグリッドがあり、クリックするとセルの値がrxjsサブジェクトにプッシュされます。コンポーネントBがそのサブジェクトにサブスクライブし、それに応じてコンテンツをリフレッシュします。このフローは、コンポーネントBが別のルータリンクに移動するまで、期待通りに機能します。コンポーネントがリロードされたときに観測可能な値を保持する

私は、コンポーネントAでセルがクリックされたとき、コンポーネントBが実際にそのサブスクリプション(次の)ハンドラの変更を通知したことがわかりました。その時点でコンポーネントBはまだ表示されていないことに注意してください。コンポーネントBがルータリンクを介して視認可能になると、そのUIはサブジェクトの値(観測可能)を反映しません。

  1. 「可視性」は問題ですか?
  2. ルータリンクのクリックによりコンポーネントBが再読み込みされ、サブジェクトから取得したデータが失われますか?
  3. このようなコミュニケーションを促進するために、被験者は正しいタイプではありませんか?私はrouterlinkがパラメータを持つことができることを理解しますが、それは私が必要とするものではありません。サブジェクトへの更新は、コンポーネントA以外のさまざまなソースから来る可能性があります。コンポーネントBは、可視性になるたびに、サブジェクトから最新の情報を反映する必要があります。
  4. クロスコンポーネントの非同期コミュニケーションを実装する正しい方法は何ですか?
+1

を助けることを願っていますコンポーネントA.

によってemited最後の値を受け取るのでしょうか?私は詳細については明確ではなく、コードの一部を見るのに役立ちます。一般的に、Subjectはアイテムが提供されたときにのみアイテムを放出します。 BehaviorSubjectはサブスクリプション時に最新のアイテムを発行します。他の種類のテーマもあります:http://reactivex.io/documentation/subject.html – DeborahK

+0

作成しようとします。私はあなたの日常的なコースを見ていて、手がかりを見つけようとしていました! – casbby

+0

おかげで、さまざまなテーマのタイプの提案がありました。それは確かに私の問題を解決しました。 – casbby

答えて

1

このシナリオでは、BehaviourSubjectを使用する必要があります。 BehaviourSubjectは最後の値を出します。あなたは成分Bに加入しますときに、それはあなたがあなたの問題をデモplunkerかstackblitzを行うことができ、それは

関連する問題