为什么我的代码在调用 api 时会无限循环?

why my code make an infinite loop when I call the api?

我正在尝试调用我的 api 来获取 tp 的名称,但在视图中我只看到 [object promise] 并且在浏览器控制台中它看起来像是在进行无限循环

html:

<table [dtOptions]="dtOptions" class="row-border hover" datatable>
  <thead>
  <tr>
    <th>Date</th>
    <th>Intitulé</th>
    <th>Résultat</th>
    <th>Coefficiant</th>
  </tr>
  </thead>
  <tbody *ngIf="grades?.length != 0">
  <tr *ngFor="let grade of grades">
    <td>{{ formatDate(grade.Date) | date : 'MM/dd/yyyy hh:mm'}}</td>
    <td>{{ getTpName(grade.tp_id) }}</td>
    <td><b>{{ grade.Grade | number:'2.1-2' }}/20</b></td>
    <td>{{ grade.coeff | number:'1.1'}}</td>
  </tr>
  </tbody>
  <tbody *ngIf="grades?.length == 0">
  <tr>
    <td class="no-data-available" colspan="4">Aucune note enregistées</td>
  </tr>
  <tbody>
</table>

TS:

  async getTpName(tp_id: any) {
    return  await this.apiService.getTpName(tp_id);
  }

api服务>getTpName

  getTpName(tp_id) {
    let url = `${this._tpUrl}/readName/${tp_id}`;
    return new Promise((resolve, reject) => {
      this.http.get(url, {headers: this.headers}).subscribe(
        res => resolve(res),
        error => reject(error)
      )
    });
  }

你知道为什么会这样吗?如何纠正?

编辑:

最好将 api 调用从 html 移动到组件控制器。

ngOnInit() {
   grades.forEach(grade => {
       this.getTpName(grade.tp_id)
           .pipe(take(1))
           .subscribe(tpName => {
                grade.tpName = tpName;
           });
   });
}
< td > {{ grade.tpName | json }}</td >