在 Angular 中使用异步显示 Table 行
Display Table Rows Using Async in Angular
我需要在 table 中显示 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 docs:
The Angular ng-container is a grouping element that doesn't interfere with styles or layout because Angular doesn't put it in the DOM.
在第二个示例中,您尝试访问 max_temp
属性 的结果 $(这可能是可观察到的 return 数组)并且它没有 属性 .
第一个示例有效,因为您只需访问该数组的实际项目(通过迭代)上的 属性。
我需要在 table 中显示 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 docs:
The Angular ng-container is a grouping element that doesn't interfere with styles or layout because Angular doesn't put it in the DOM.
在第二个示例中,您尝试访问 max_temp
属性 的结果 $(这可能是可观察到的 return 数组)并且它没有 属性 .
第一个示例有效,因为您只需访问该数组的实际项目(通过迭代)上的 属性。