我有一个按钮,可以在单击时删除一个项目。我想在操作完成后显示一个简单的 alert('Item deleted')
警报。但是我似乎无法让它发挥作用。请注意,该项目已被删除。
这是我尝试过的:
deleteItem 我组件中的函数
deleteItem(id: number) {
this.eventsService
.deleteEventById(id)
.subscribe(
res => console.log(res),
err => console.log(err),
() => alert('Item deleted')
);
}
没有任何内容打印到控制台,也没有显示任何警报。
deleteEventById 我服务中的函数
deleteEventById(id: number) {
return this.http
.delete(`/api/events/${id}`, this.headerForPrivateCalls)
.pipe(
catchError(this.handleError),
);
}
api 路由(如果重要的话)
router.delete('/events/:id', authCheck, (req, res) => {
connection((client) => {
client.db('gordes').collection('events')
.deleteOne({id: +req.params.id})
.then(() => {
res.status(204);
})
.catch((err) => {
sendError(err, res);
});
})
});
最佳答案
您的 deleteEventById 服务不会向 Observable 返回任何内容。 您将需要添加一个 .map()
deleteEventById(id: number) {
return (this.http
.delete(`/api/events/${id}`, this.headerForPrivateCalls)
.map(response => response.json())
.pipe(
catchError(this.handleError),
);
)
}
编辑
问题似乎出在 Node 后端:
你不返回任何东西
res.status(204);
使用:
res.status(204).send();
关于javascript - 使用 Angular HttpClient 在 DELETE 请求完成后执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48661903/