Angular 2 RxJS groupBy flatMap 为空

Angular 2 RxJS groupBy flatMap empty

我是 RXxJS 的新手,所以我可能看错了,但我有一个 returns 数组 'Verpleegperiodes':

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

并且在我的组件中,我正在尝试获取按 'kamer' 属性 分组的 'Verpleegperiodes' 的数组,这是用于 ex。 '101', '102', '103', ... 所以我想要一个 Observable 流 for ex.:

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

或者更好,如果这可以用 RxJS:

{ 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 returns:

101
101
102
...

我已经在 reduce 函数中放置了一些 console.log 来记录 acc 和 curr 值,它们将正确的值分组到 1 个数组中。 但是,映射函数中的 console.log 从不记录。甚至不是 undefined 或 [].

在我的模板中,我也尝试打印流的异步值:

{{ activeVerpleegperiodes$ | async | json }}

这始终为空。

我怎样才能得到所需的结果?

如果 Verpleegperiodes 数组一次性到达,则不需要 RxJs。

RxJs 可帮助您随时间操纵值。

您可能对类似的东西感兴趣:(或 lodash,但 lodash 似乎仅此而已)。