我有一个场景,我必须在特定组件被销毁之前将数据发送到 api (数据库)。正如 Angular2 生命周期中所描述的,在组件被销毁并调用之前执行一个方法ngOnDestroy
。但正如文档中所指定的,这是一个 void 函数,因此它不会等待某些结果返回。
我的问题是如何在 ngOnDestroy 函数中执行对 api 的调用并等待它完成?
如果我只是调用更新函数,它就可以工作,但是当我从一个组件路由到另一个组件时,第一个组件的数据尚未更新,而下一个组件加载旧数据(如果我点击刷新,那么我会得到新数据)。所以问题是我不能等待更新函数完全执行,然后允许组件销毁并路由到下一个组件,该组件将加载正确的更新数据:
updateData(data: any, callback?: Function) {
this.apiService.update(data).then(response => {
callback(response);
}
}
ngOnDestroy() {
this.updateData(this.data);
}
// Maybe i could somehow use callback functionality to postpone execution of ngOnDestroy function
ngOnDestroy() {
this.updateData(this.data, response => {
});
}
或者有其他方法可以解决这种情况吗?
我想,与其做这样的事情,不如尝试这种更干净、更好的方法。
利用共享服务,将 r 值传递给共享服务Destroy
然后导航到第二个组件时。有一个路由器解析,它将确保在加载组件时填充数据并供您使用。
对于共享服务,请检查此LINK https://rahulrsingh09.github.io/AngularConcepts/faq- 问题2和路由器解析LINK https://rahulrsingh09.github.io/AngularConcepts/guard.
如果您想要更好的可读性,您也可以使用 redux 或 ngrx areLINK https://rahulrsingh09.github.io/AngularConcepts/ngrx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)