我对RXxJS很新,所以我可能会以错误的方式看待它,但我有一个返回'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流,例如:
[{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返回:
101
101
102
...
我已经在reduce函数中放入了一些console.log来记录acc和curr值,它们将正确的值分组为1个数组。 但是,map函数中的console.log永远不会记录。甚至没有定义或[]。
在我的模板中,我也尝试打印流的异步值:
{{ activeVerpleegperiodes$ | async | json }}
这始终为空。
如何获得所需的结果?
答案 0 :(得分:0)
如果您Verpleegperiodes
数组一次到达,则不需要RxJ。
RxJs可以帮助你随着时间的推移操纵价值。你可能会对这样的事情感兴趣:https://stackoverflow.com/a/34890276/2398593(或者lodash,但是lodash似乎只有这样才有效)。