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

时间:2018-02-07 10:49:05

标签: javascript node.js angular typescript 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 route (如果重要)

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);
        });
    })
});

1 个答案:

答案 0 :(得分:1)

您的deleteEventById服务不会向Observable返回任何内容。 您需要添加.map()

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

修改

问题似乎在节点后端:

你不会通过

返回任何内容
res.status(204);

使用:

res.status(204).send();