如何处理对 API 的异步调用?
How to handle asynchronous call to API?
我有 JSON 对象数组,必须将每个 JSON 对象命中的 API 结果添加到每个 JSON 对象的特定元素,并且最终结果应该显示在 HTML 文件中?
但是 HTML 页面在从 API?
检索到的数据之前已经呈现
问题是这样的:
<tr *ngFor="let order of Orders">
<td><img src="images/honey.jpg" style="width:50px;"/>
<span style="margin-left:10px;">{{order.productName}} <strong>[ package:</strong> {{order.packageName}}<strong>]</strong></span></td>
<td><input type="number" class="form-control" step="1" style="width:80px;" [value]="order.quantity" /></td>
<td><span>NPR Rs.{{order.Rate|number}}</span></td>
<td><strong>{{order.totalPrice}}</strong></td>
<td>
<a href="#" style="color:#F00"><i class="fa fa-trash" (click)="removeItem(order)"></i> Remove</a>
</td>
</tr>
只有totalPrice是从API这边计算的,其他所有内容都已经在Orders变量中。
在 ts 文件:
calculatePrice(){
let i;
for(i =0;i<this.Orders.length; i++){
this.dataService.post("order/prices",this.Orders[i])
.subscribe(res=>{
this.Orders[i]['totalPrice'] = res.totalPrice;
})
}
}
您可以在组件中的元素上使用 *ngIf="data"
以防止在 data
获得值或
之前呈现
您可以使用守卫来防止在数据可用之前路由到组件 https://angular.io/docs/ts/latest/guide/router.html#!#guards
您还可以阻止整个 Angular2 应用程序的初始化,直到来自服务器的数据可用
我有 JSON 对象数组,必须将每个 JSON 对象命中的 API 结果添加到每个 JSON 对象的特定元素,并且最终结果应该显示在 HTML 文件中? 但是 HTML 页面在从 API?
检索到的数据之前已经呈现问题是这样的:
<tr *ngFor="let order of Orders">
<td><img src="images/honey.jpg" style="width:50px;"/>
<span style="margin-left:10px;">{{order.productName}} <strong>[ package:</strong> {{order.packageName}}<strong>]</strong></span></td>
<td><input type="number" class="form-control" step="1" style="width:80px;" [value]="order.quantity" /></td>
<td><span>NPR Rs.{{order.Rate|number}}</span></td>
<td><strong>{{order.totalPrice}}</strong></td>
<td>
<a href="#" style="color:#F00"><i class="fa fa-trash" (click)="removeItem(order)"></i> Remove</a>
</td>
</tr>
只有totalPrice是从API这边计算的,其他所有内容都已经在Orders变量中。
在 ts 文件:
calculatePrice(){
let i;
for(i =0;i<this.Orders.length; i++){
this.dataService.post("order/prices",this.Orders[i])
.subscribe(res=>{
this.Orders[i]['totalPrice'] = res.totalPrice;
})
}
}
您可以在组件中的元素上使用 *ngIf="data"
以防止在 data
获得值或
之前呈现
您可以使用守卫来防止在数据可用之前路由到组件 https://angular.io/docs/ts/latest/guide/router.html#!#guards
您还可以阻止整个 Angular2 应用程序的初始化,直到来自服务器的数据可用