2017-12-08 27 views
0

これらのサービスのメタデータを提供するために他のサービスを利用するAngularサービスを試しています。データオブジェクトは、接続クラスを持つ異なるクラスの人です。 (クライアント、コンサルタント、販売関係)Observable - > Filter - > Observableとして提供

私が追跡したい基本的な指標は、クライアントにコンサルタントが割り当てられているかどうかです。 (すなわち、不一致)。私は、観察可能なアレイが、私はそうのように私のメタデータサービスにに加入するクライアントと呼ばれる、私の標準サービスで持っている:私は何をしたいか

this.clientService.clientArray().map(.....).subscribe(i => this.unmatchedClients.next(i); 

は、複数のフィールドをチェックするために観察可能なサブスクリから入ってくる配列をフィルタリングしています。それは私がこのような完全なフィルタコールを持っている必要があることを他の場所で示唆された。

this.clientService.clientArray().map(r => { 
    r.filter(i => { 
     i.connected === true 
    }) 
}).subscribe(r => this.unmatchedClients.next(r)); 

期待される結果は、私が購読してカウントのための長さを得ることができ、クライアントではなく、個々のクライアントの配列でなければなりません。

どうすればこの問題を解決できますか?

+0

マップのフィルタリングは機能しませんか?そのコードでは 'r.filter(...) 'の前に' return'を置くべきです。なぜなら '{}'で囲まれているからです。 – bygrace

+0

それはありませんでしたが、私は観測値を完全に理解していなかったからだと思います –

+0

return文を追加してみてください。それでもうまくいかない場合は、 'this.clientService.clientArray()'によって返されるデータの例を挙げることができます。 – bygrace

答えて

0

私はあなたが一つの追加、不要なステップを持っていると思います。サブスクリプションに配列あなたのパイプをフィルタリングする場合は、なぜちょうど私があるように私はそれを保ったので、目標何見当がつかない

this.clientService.clientArray() 
.filter(client => { 
    return client.connected; 
}) 
.subscribe(r => this.unmatchedClients.next(r)); 

にサブスクリプション内のコードのビットを行うませません。

関連する問題