0

我需要在表格中显示 JSON 响应的结果。我已经用下面的方法弄清楚了

<tr *ngFor="let result of results$ | async">
    <td>{{result.max_temp}}</td>
</tr>

但我想在下面做这样的事情,但它不起作用。谁能帮我解决这个问题?

<tr *ngFor="let result of (results$ | async)?.max_temp">
    <td>{{result}}</td>
</tr>
4

2 回答 2

0

我有这两个我可以建议的解决方案。你可以使用它们中的任何一个。

解决方案1:

<ng-container *ngIf="results$ | async as resolvedResult">
  <tr *ngFor="let result of resolvedResult.max_temp">
    <td>{{result}}</td>
  </tr>
</ng-container>

解决方案2:

<ng-container
    *ngTemplateOutlet="asyncTemplate;context:{resolvedResult: results$ | async}">
</ng-container>

<ng-template #asyncTemplate let-resolvedResult="resolvedResult">
  <tr *ngFor="let result of resolvedResult.max_temp">
    <td>{{result}}</td>
  </tr>
</ng-template>

请注意,来自Angular 文档

Angular ng-container 是一个不会干扰样式或布局的分组元素,因为 Angular 不会将它放入 DOM。

于 2019-04-30T09:39:55.403 回答
0

在第二个示例中,您尝试访问max_tempresults$ 的属性(这可能是可观察的返回数组)并且它没有该属性。第一个示例有效,因为您只需访问该数组的实际项目(通过迭代)的该属性。

于 2019-04-30T09:42:23.450 回答