我一直在努力從我的http請求序列中獲得正確的效果。我必須做一個返回一個網站對象數組的初始請求。然後,我必須使用站點對象中找到的兩個id再創建兩個http請求,以獲取關聯的站點組織名稱和團隊名稱,並將它們添加到每個站點對象。所以,我的步驟是:網站更好的實現可觀察序列的方法
- 獲取列表
- 使用現場組織ID來獲得相關的組織,並添加名字到站點對象。
- 使用網站團隊ID獲取相關團隊並將團隊名稱添加到網站對象。
我的代碼如下:
private getSites() {
this.spinner.show();
this.sitesService.getSitesByUserId(this.userId)
.subscribe(
_data => {
_data.map(site => {
this.orgService.getOrganization(site['OrganizationId'])
.map(org => {
site['orgName'] = org['org']['name'];
return org;
})
.flatMap(() => this.teamsService.getTeam(site['TeamId']))
.map(team => {
site['teamName'] = team['team']['name'];
return team;
})
.subscribe(
_d => {
this.sites.push(site);
}
);
});
},
_error => {},
() => {
this.spinner.hide();
this.loading = false;
}
);
}
在我的HTML我綁定數據:
<div *ngFor="let site of (sites | filterlist: value : 'name')">
<card-directory-item (click)="siteSelected(site)">
<i class="material-icons item-icon">location_city</i>
<h2 class="item-name">{{ site.name }}</h2>
<div class="item-field-1">{{ site.city }} {{ site.state }} </div>
<div class="item-static-field flex-column">
<div>{{ site.teamName }}</div>
<div>{{ site.orgName }}</div>
</div>
</card-directory-item>
</div>
問題是微調器完成所有步驟之前被刪除每個清單項目都按照完成的順序彈出。我知道這是爲什麼發生。我只是無法弄清楚如何鏈接可觀察的流來完成一切,然後才能移除微調器並顯示數據。
任何協助將是偉大的。謝謝。
謝謝。這工作非常好,我從你的解決方案中學到了很多東西。其實從雙方都學到了。 :) – Aaron
太棒了,感謝您的反饋。學習是最好的感覺:)很高興我可以幫助 – atomrc