我有以下代码:
Observable.combineLatest(
this.data.getPersonalData(myfilter),
this.peopleService.selectedPerson,
).subscribe(([data, person]) => {
this._data = data;
if (this._data.length) {
this.infoService.getInfo(
person.id
)
.subscribe(res => {
this.handleInfo(res);
});
}
});
Observable.combineLatest(
this.data.getPersonalData(myfilter),
this.sectionService.selectedSection
).subscribe(([data, section]) => {
this.filterbySection(s);
});
我将尝试解释这个场景:
首先,我们获得myfilter
给出的所有个人数据。 Okey,现在,给定selectedPerson
我们获取一个人的所有信息,handleInfo
将此信息与data
中的一组对象相关联。但事情是,当它结束时我想filterbySection
selectedSection
。
我知道我可以将this.sectionService.selectedSection
放在第一个combineLatest
中,但每次用户更改该部分时,它都会运行infoService
进入数据库并带来所有信息,我不需要这种行为。当我选择一个人时,我需要运行getInfo
,处理此信息将其映射到_data
,然后在每次用户点击新内容时按部分过滤所有内容“info + data”部分。
答案 0 :(得分:0)
我不确定这个解决方案。但我可以为EventEmitter
创建一个info
,然后我就可以订阅personalInfo
,而在第二个combineLastest
中我会有类似的内容:
Observable.combineLatest(
this.infoService.selectedInfo,
this.sectionService.selectedSection
).subscribe(([info, section]) => {this.filterBySection(info, section)});