我们有两个类“需求”和“企业”,其关系为OneToMany。我想展示每个需求者的企业。 该API可以运行,但问题出在前头。
企业服务:
getDemandeEntreprisebyId(id)
{
this.http.get(this.rootURL + '/Entreprise/EntrepriseByDemande/'+id)
.toPromise()
.then(res => this.listDemandeEntreprise = res as Entreprise[]);
}
查看:
<tr *ngFor="let sd of serviceDemande.list" >
<td (click)="populateForm(pd)">{{pd.dateDemande | date : 'dd/MM/yyyy'}}</td>
<td (click)="populateForm(pd)">{{pd.typeDemande}}</td>
<td *ngFor="let e of serviceEntreprise.getDemandeEntreprisebyId(sd.idDemande)">{{e.nomEntreprise}}</td>
</tr>
答案 0 :(得分:0)
如Heretic Monkey的评论中所述,您的函数未返回数据。它看起来应该更像下面。这是return关键字,它将确保将来自promise的数据发送回调用它的函数。
public getDemandeEntreprisebyId(id): Promise<any>
{
return this.http.get(this.rootURL + '/Entreprise/EntrepriseByDemande/'+id)
.toPromise()
.then(res => this.listDemandeEntreprise = res as Entreprise[]);
}
在html中,您可能还希望在其上添加异步管道,以使*ngFor
等待应许解决。看起来像这样。
<td *ngFor="let e of serviceEntreprise.getDemandeEntreprisebyId(sd.idDemande)$ | async">
使用Angular时将检查Observable和subscriptions,因为它们比promise有优势。 Here is a good question explaining。
在异步管道上也有一些documentation,因为还有其他处理方法。