我需要在表格中显示 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>
我需要在表格中显示 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>
我有这两个我可以建议的解决方案。你可以使用它们中的任何一个。
解决方案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。
在第二个示例中,您尝试访问max_temp
results$ 的属性(这可能是可观察的返回数组)并且它没有该属性。第一个示例有效,因为您只需访问该数组的实际项目(通过迭代)的该属性。