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。请检查服务器以确保。
在 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。请检查服务器以确保。