問題タブ [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.

0 投票する
1 に答える
67 参照

angular - BahaviorSubject が発行されていないことを観察可能

戻りデータモデルのサービスがあります。モデルには DateTime プロパティ ( RelatedDateTime ) が含まれています - サーバーから返された現在の UTC DateTime です。このデータを、サービスを実行するコンポーネントとは別のコンポーネントで使用したいと考えています。そのためにBahaviorSubjectを使用して います( Subjectを使用して BahaviorSubject に変更しました)。それは非常に単純なはずですが、どういうわけか何かが欠けています-オブザーバブルが発行されていません-データを必要とするコンポーネント( HeaderComponent )がデータを取得していません。私のコードを見てください:

これは、サービスを実行するコンポーネントです。

これは、RelevantDataTime を必要とするコンポーネントです

0 投票する
2 に答える
790 参照

angular - 動作主体は初期値のみ表示 / リプレイ主体は更新値を表示しない

バックグラウンド:

オープンレイヤーベースのマップがあるサービスがあります。マップ コンポーネントには独自のサービスがあります。

アイコンをクリックするとポップアップが生成されます。このポップアップにはボタンがあり、クリックするとポップアップに表示されたオブジェクトからデータを取得し、別のコンポーネントに移動します。

このデータを行動サブジェクトに公開/追加してから、新しいコンポーネントでサブスクライブしようとしています。アイコンをクリックすると、行動主体にデータが追加されます。ポップアップ コンポーネントには独自のサービスがあります。

宛先コンポーネントでは、非同期パイプを使用して、テンプレートのポップアップ サービス動作サブジェクトにサブスクライブしようとしています。

問題:

行動サブジェクトのオブザーバブルは初期値のみを返します。行動主体の次の機能は、それに新しいデータを追加しているようには見えません。常に新しい価値を提供します。

Replay subject を使用すると、何も表示されません。次の関数は、まったく効果がないように見えます。

コード :

ポップアップサービス

地図サービス

宛先サービス

次に、宛先コンポーネントには、単に非同期パイプがあります。

私がすでに試したこと:

  1. プロジェクト構造を介して移動せずに、ポップアップサービスから直接動作サブジェクトをインポートします。

  2. サンプル コードに示すように、リプレイ サブジェクトの代わりに動作サブジェクトを使用します。

  3. 3 つのサービスすべてを app.module.ts の providers 配列に追加します。行動主体は依然として元の値を発し、再生主体は何も発しません。

更新: ポップアップ サービス

店舗サービス