在页面加载我想提出一个HTTP GET来电索取一些数据。
页面上有一个向APi提交新数据的表单。该响应不包含新的更新数据,但数据在表单提交后存在于数据库中。
我需要通过在表单提交后进行第二次API调用来访问数据。
问题
的表单提交之后,如何让我再次初始API调用来检索当前数据,然后用它更新我的视图组件?
代码
在页面加载我称之为内
该功能最初调用来检索数据
ngOnInit() { this.getPaymentMethods() }
函数定义
private getPaymentMethods() {
let params: URLSearchParams = new URLSearchParams();
params.set('api_key', this.apiKeyData);
params.set('email', this.auth.user.email);
return this.http.get(STATICS.API_BASE + STATICS.API_ALL_PAYMENT_METHODS,
{ search: params })
.map((res: Response) => res.json()).subscribe((res) => {
localStorage.setItem('payment_profiles', JSON.stringify(res.payment_profiles));
});
}
处理响应于来自初始呼叫
解析数据对象响应
this.PaymentMethodKeys = Object.keys(this.pMethodsData);
视图内我显示这样
<div *ngFor="let key of PaymentMethodKeys">
{{pMethodsData[key].card_no}}
{{pMethodsData[key].payment_profile_id}}
</div>
该数据被认为是形式提交给数据库添加新数据
saveCreditCard(model: Payment, isValid: boolean) {
let params: URLSearchParams = new URLSearchParams();
params.set('api_key', this.apiKeyData);
params.set('email', model.email);
params.set('u_address', model.street_address);
params.set('u_city', model.city_address);
return this.http.get(STATICS.API_BASE + STATICS.API_PAY_METHOD,
{ search: params })
.map((res: Response) => res.json())
.subscribe((res) => {
console.log(res);
});
}
}
我认为我的问题的一部分是,我从构造函数中的对象获取键。所以我认为我一直试图做这个工作,但它更新密钥的唯一方式是组件刷新时,构造函数将再次运行。
任何帮助,将不胜感激。
你可以显示你如何分配数据到pMethodsData? –
我可以看到两种方法来处理这个问题。建议之一,你在你的回复中返回新创建的新数据,并将其推入'PaymentMethodKeys'数组中。其次,你用新数据返回新的PaymentMethodKeys数组。 (或3,router.navigate()来重建组件?) – mickdev
当然,我不知道你的项目有多远,或者你对API的承诺如何,但是如果你真的对将数据库实时更改为实时视图,并充分利用您应该查看的全部功能[Firebase](https://firebase.google.com/)和[AngularFire 2](https://github.com/angular/angularfire2)。如果您使用的是Firebase的实时数据库,则只需订阅paymentMethods节点,并随时更改,即可立即在客户端视图中呈现 - 在所有客户端视图中无需进行其他调用。 –