0

あるオブザーバブルから同じタイプのアイテムのリストを含む別のオブザーバブルに1つのアイテムを追加したいオブザーバブルとパイプの使用に苦労しています。

私はタイプXを持っています.そしてタイプXIには観察可能な配列があります:

readonly arrayOfx$: Observable<X[]>;

タイプ X のみのオブザーバブルもあります。

private readonly _x$: Observable<UpdateOfX>;

interface UpdateOfX {
    x: X,
    updateState: "Add" | "Modified" | "Removed"
}

このコードはすべて、サービスが X の配列のみを公開するサービス クラスにあります。配列内のデータを非同期パイプで html に表示すると、機能のこの部分が機能します。ホストとクライアントは signalR 手法で接続され、onConnected、タイプ X の項目の配列が取得されます。ただし、アプリケーションが実行されると、バックエンドでタイプ X の新しいアイテムを作成したり、既存のアイテムを変更または削除したりできます。これが発生すると、このアイテムのみが signalR 接続と変更状態を介して送信されます。

フロント エンドでは、このアイテムは既に取得されているタイプ X のアイテムの配列に追加する必要があります。以前に取得したアイテムのリスト?

constructor() {
    this.arrayOfx$ = this._someSignalRHelperService.retrieveMultipleItems$.pipe(
        tap((xArray: X[]) => console.log(xArray)), 
        //can I somehow get the a later created x from the server here...
    );

    this._x$ = this._someSignalRHelperService.retrieveOneItem$.pipe(
        tap((updateOfX: UpdateOfX) => console.log(updateOfX)),
        map((updateOfX: UpdateOfX) => {
            //process the updateState
            //... or must I do something here to get x into x[]?
        })
    );
}

SignalR が使用されているため、タイプ X の新しいアイテムが作成されたときにクライアントがそれを受け取ると、バックエンドが制御されます。

4

1 に答える 1