angular - 从 Angular 中的 http 请求更新数据
问题描述
我有一个界面,基本上可以让您添加、编辑或删除用户。当组件初始化时,它会向服务器发出 http 请求以获取当前用户。因此,如果您要编辑或删除用户,则会有一个从该请求收到的所有用户的下拉列表。问题是,如果我删除了一个用户,例如通过 http 请求,我需要发送另一个 get 请求来更新数据客户端,这样如果你再次打开下拉菜单,它就会反映所做的更改。我可以通过在成功请求后再次运行“ngOnInit()”来解决这个问题,但这意味着每次用户做某事时我都在“订阅”。
ngOnInit() {
this.service.getUsers()
.subscribe(payload => {
payload.forEach(user => {
this.users.push(user);
});
});
}
我是 Angular 的新手,所以我不完全确定最好的方法,但我觉得每次用户执行请求时运行这种“订阅”方法是错误的。任何帮助,将不胜感激。
解决方案
理想情况下,最好在执行 POST/Delete 操作后从服务器请求数据,以确保从服务器获得最新/正确的数据。所以是的,删除后再次获取数据是可以的。
我在下面给出了典型的代码示例,您可以如何做到这一点。不要忘记取消订阅 observables 并在以后处理它们。
private subscriptions = new Subscription();
ngOnInit() {
this.refreshList()
}
deleteUser(id: string) {
this.subscriptions.add(
this.service.deleteUser(id).subscribe(
success => {
this.notificationService.showNotification(`User deleted: ${success.name}`);
this.refreshList();
},
errors => this.notificationService.showErrors('Error deleting User', errors)
)
);
}
refreshList() {
this.subscriptions.add(
this.service.getUsers()
.subscribe(payload => {
this.users = payload;
}));
}
ngOnDestroy() {
this.subscriptions.unsubscribe();
}
推荐阅读
- php - 持续解析由 PHP 中的另一个进程更新的 CSV 文件
- asp.net-core - Joining two different ContainerBuilder
- r - R:具有标记化和 %like% 的自创函数仅适用于第一个标记
- qt - 如何通过 setStyleSheet 在表单中自定义 QMessageBox?
- angular - 我正在使用动态表单从表单中检索值,但是当我控制台记录我从该表单中的值创建的对象时,我得到了未定义
- .net - Confluent.Kafka 与 Confluent.Kafka.StrongName nuget 包之间的区别
- java - 用于 API 响应的 POJO,其键为“-”
- python - 分页停止在 Django 应用程序上工作
- python - Python从列表中删除特定项目
- reactjs - 在 Next.js / React.js 中渲染 WordPress 页面构建器块?