使用 Angular HttpClient 在 DELETE 请求完成后执行某些操作

Do something after a DELETE request is complete with Angular HttpClient

我有一个按钮,可以在单击时删除一个项目。我想在操作完成后显示一个简单的 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 服务不会 return Observable。 您将需要添加一个 .map()

    deleteEventById(id: number) {
       return (this.http
        .delete(`/api/events/${id}`, this.headerForPrivateCalls)
        .map(response => response.json())
        .pipe(
           catchError(this.handleError),
        );
      )
   }

编辑

问题似乎出在节点后端:

你 return 什么都没有

res.status(204);

使用:

res.status(204).send();