【发布时间】:2020-01-22 01:00:17
【问题描述】:
我有一个非常简单的 Angular 应用程序,它正在向后端/服务器(一个用 C# 编写的 MS AspNetCore 应用程序)发送一个字符串列表(仅对于这个示例,实际上它是一个称为协议的更复杂数据的列表)使用 post 方法。此功能运行良好,但由于我对 angular 非常陌生,因此在此过程中我正在努力处理发生在服务器端的故障。如果出现问题,我想在客户端显示错误消息。
这是我到目前为止根据 Angular 教程构建的内容: angular component.ts文件基本都有上传方法:
constructor(
private readonly SVC: UploadService) { }
uploadStringlist(): void {
let sarray: string[] = [];
sarray.push("string1");
sarray.push("string2");
this.SVC.uploadList(sarray).subscribe(
_ => { this.finished,emit(`protocols sent: next`)},
err => { this.finished.emit(`Protocols sent: error` + err)},
() => { this.finished.emit(`Protocols sent`)});
}
而upload.service.ts文件基本上都有这个方法:
uploadList(slist: string[]): Observable<string> {
return this.http.post<string>(apiurl, slist, httpOptions)
.pipe(
tap(res => log("uploaded protocol list to server", res)),
catchError(handleError<string>("test")));
}
管道只是为了完整性(我不想在原始代码中过多地更改我的示例)
所以在服务器端只有这个uploadController:
[HttpPost]
public IActionResult Post(string[] slist)
{
foreach (var s in slist)
{
// do something
}
return StatusCode(409);
//return Ok();
}
所以,无论我在控制器上返回什么,我都会在客户端得到相同的结果。这意味着我得到了结果:“protocols sent”。
但理想情况下,如果我在控制器中返回错误,我会得到一个结果列表(字符串数组中的每个条目一个)或者至少一个错误。 但我不知道如何实现。
【问题讨论】:
标签: c# angular typescript