我有一个BehaviorSubject,可以使用HttpClient调用API:
let parents = new BehaviorSubject<Parent[]>([]);
this.httpClient.get<Parent[]>('parents-and-children').subscribe(result => {
parents.next(result);
});
家长和儿童班是:
class Parent {
id: number;
name: string;
childrens: Children[];
}
class Children {
id: number;
name: string;
}
我希望执行以下操作:
给出parentId值,则从BehaviourSubject获取具有该ID的父级。
给出一个childrenId值,通过查看所有父母的孩子来获得具有该id的孩子。
let parentId = 1;
parents.pipe( ??
let childrenId = 2;
parents.pipe( ??
我一直在尝试管道,但是我不确定如何过滤项目...
答案 0 :(得分:3)
let parentId = 1;
let childrenId = 2;
parents.pipe(
map(parnts => parnts.find(p => p.id === parentId))
).subscribe(parent => console.log(parent));
parents.pipe(
map(parnts => [].concat(...parnts.map(p => p.childrens))),
map(childrens => childrens.find(ch => ch.id === childrenId))
).subscribe(child => console.log(child));