【发布时间】:2021-07-04 19:41:44
【问题描述】:
我有两个可观察的数组。
habits$: Observable<Habit[]>;
status$: Observable<Status[]>;
习惯的结构如下:
export interface Habit {
habitId: number;
name: string;
repeatVal: number;
notification: string;
color: string;
question: string;
id: number;
}
status 数组有 habitId、date 和 status 作为键。
我想根据两者中存在的habitId 属性将habits$ 和status$ 合并到一个Observable 数组中。
我已经做了一些研究,mergeMap() 和 forkJoin() 的组合似乎是要走的路,如下所示 Combine multiple observable arrays into new object array
但我想不出适合我的语法。
这就是我的代码目前的样子:
ngOnInit() {
this.habits$ = this.habitService.fetchAllById(this.authService.userId);
console.log(this.habits$);
this.status$ = this.statusService.fetchAll();
this.habits$.pipe(
mergeMap(habits => {
this.status$ = this.statusService.fetchAll().filter(status => status.habitId == habits.habitId);
}));
console.log(this.joined$);}
【问题讨论】:
-
您想要的合并数组的类型是什么?
-
你需要在你的mergemap中返回一个observable(我想我会使用switchmap),现在你只是在分配一些东西:只要返回this.statusService.fetchAll().filter(status => status .habitId == 习惯.habitId);
-
另一个 Observable 数组。基本上我想将两个 Observable 数组合并为一个,其中来自 status-Observable 的值根据匹配的 habitId 附加到 habit-Observable 的值。
标签: arrays angular typescript rxjs observable