2017-03-28 20 views
0

私はRXxJSにかなり新しいので、私はそれで間違った方法を探しているかもしれないが、私は「Verpleegperiodes」の配列を返すサービスを持っている:角度2 RxJS GROUPBY flatMap空

export class Verpleegperiode{ 
    verpleegperiodeId?: number; 
    beginDatumUur?: moment.Moment; 
    eindDatumUur?: moment.Moment; 
    bed: string; 
    kamer: string; 
    dienst: Dienst; 
    dossier: Dossier; 
} 

そして、私のコンポーネントでは、私は 'kamer'プロパティでグループ化された 'Verpleegperiodes'の配列を取得しようとしています。 '101'、 '102'、 '103'、... は、だから私は、これはRxJSで可能であるならば、用例:

[{verpleegperiodeId: 1, kamer: '101'},{verpleegperiodeId: 3, kamer: '101'}] 
[{verpleegperiodeId: 6, kamer: '102'}] 

あるいはさらに良いの観測ストリームが欲しい:

このため
{ kamer: '101', verpleegperiodes: [{verpleegperiodeId: 1, kamer: '101'},{verpleegperiodeId: 3, kamer: '101'}] } 
{ kamer: '102', verpleegperiodes: [{verpleegperiodeId: 6, kamer: '102'}] } 

、私はグループ別のドキュメント見つけた:

:これを使用してhttps://www.learnrxjs.io/operators/transformation/groupby.html

を、私はこれを生成する(ルートのdienstIdパラメータを使用して)このコードを追加しました

this.activeVerpleegperiodes$ = this._route.params 
    .switchMap((params: Params) => this._infohosService.getActiveVerpleegperiodesByDienstId(params['dienstId'])) 
    .flatMap(verpleegperiodes => verpleegperiodes) 
    .groupBy(vp => { console.log(vp.kamer); return vp.kamer; }) 
    .flatMap(group => { return group.reduce((acc, curr) => { return [...acc, curr]; }, []); }) 
    .map(f => { console.log(f); return f; }); 

値を確認するためにconsole.logを追加しました。 GROUPBY部分戻りではconsole.log:

101 
101 
102 
... 

私はすでに1つの配列の正しい値をグループ化され、ACCとCURR値をログに記録する機能を減らすには、いくつかはconsole.log年代を入れています。 ただし、map関数のconsole.logはログに記録されません。未定義または[]でさえない。私のテンプレートで

私もストリームの非同期値を印刷しよう:

{{ activeVerpleegperiodes$ | async | json }} 

これは常にnullです。

どのようにして必要な結果を得ることができますか?

答えて

0

Verpleegperiodesの配列が一度に到着すると、RxJは必要ありません。

RxJsは値の操作に役立ちます。あなたはそのようなものに興味があるかもしれません:https://stackoverflow.com/a/34890276/2398593(またはロダッシュですが、ロダッシュはあまりにも残虐だと思われます)。