我在视图中找不到ID

时间:2019-04-17 14:55:59

标签: angular typescript

我们有两个类“需求”和“企业”,其关系为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>

1 个答案:

答案 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,因为还有其他处理方法。