問題タブ [subject-observer]
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 - BahaviorSubject が発行されていないことを観察可能
戻りデータモデルのサービスがあります。モデルには DateTime プロパティ ( RelatedDateTime ) が含まれています - サーバーから返された現在の UTC DateTime です。このデータを、サービスを実行するコンポーネントとは別のコンポーネントで使用したいと考えています。そのためにBahaviorSubjectを使用して います( Subjectを使用して BahaviorSubject に変更しました)。それは非常に単純なはずですが、どういうわけか何かが欠けています-オブザーバブルが発行されていません-データを必要とするコンポーネント( HeaderComponent )がデータを取得していません。私のコードを見てください:
これは、サービスを実行するコンポーネントです。
これは、RelevantDataTime を必要とするコンポーネントです
angular - 動作主体は初期値のみ表示 / リプレイ主体は更新値を表示しない
バックグラウンド:
オープンレイヤーベースのマップがあるサービスがあります。マップ コンポーネントには独自のサービスがあります。
アイコンをクリックするとポップアップが生成されます。このポップアップにはボタンがあり、クリックするとポップアップに表示されたオブジェクトからデータを取得し、別のコンポーネントに移動します。
このデータを行動サブジェクトに公開/追加してから、新しいコンポーネントでサブスクライブしようとしています。アイコンをクリックすると、行動主体にデータが追加されます。ポップアップ コンポーネントには独自のサービスがあります。
宛先コンポーネントでは、非同期パイプを使用して、テンプレートのポップアップ サービス動作サブジェクトにサブスクライブしようとしています。
問題:
行動サブジェクトのオブザーバブルは初期値のみを返します。行動主体の次の機能は、それに新しいデータを追加しているようには見えません。常に新しい価値を提供します。
Replay subject を使用すると、何も表示されません。次の関数は、まったく効果がないように見えます。
コード :
ポップアップサービス
地図サービス
宛先サービス
次に、宛先コンポーネントには、単に非同期パイプがあります。
私がすでに試したこと:
プロジェクト構造を介して移動せずに、ポップアップサービスから直接動作サブジェクトをインポートします。
サンプル コードに示すように、リプレイ サブジェクトの代わりに動作サブジェクトを使用します。
3 つのサービスすべてを app.module.ts の providers 配列に追加します。行動主体は依然として元の値を発し、再生主体は何も発しません。
更新: ポップアップ サービス
店舗サービス