Post 跳过订阅结果

Post subscribe result skipped

在 Angular 8 应用程序中,我有以下方法:

onSubmit() {

    this.mailService.sendMessage().subscribe(
      (res: any) => {
          this.toastr.success('Message Sent');
          this.resetForm();
      },
      err => {
        this.toastr.error('Message Not Sent', res.status);
      }
    );
}

sendMessage()函数在一个Service组件中,如下:

sendMessage(){
    return this.http.post(environment.apiEndpoint + environment.messageController, this.mailMessage);
}

http 是来自 @angular/common/http.

HttpClient 对象

令人难以置信的是 res 总是被跳过,无论服务器通信成功还是失败,事实上 res.status 你在 err lambda 中看到的打印 200 是代码对于与服务器的成功交易,我已经检查过了,但还是打印了它,只是为了确保。

除此之外,post 已被服务器成功接收和管理,正如 200 OK 响应所预期的那样。

有人能告诉我这是怎么回事吗?为什么 res 似乎被忽略了?

您的代码不完整。您需要映射结果。像这样

import { catchError, map } from 'rxjs/operators';

sendMessage(){
    return this.http.post(environment.apiEndpoint +
    environment.messageController, this.mailMessage).pipe(
        map((result) => result), catchError(err => throwError(err))
    )
};

这就是转化成功的结果。

注意:如果您的应用程序没有全局错误处理。您需要捕获错误!

可能是您的后端响应错误,状态代码为 200。请检查服务器以确保。