使用angular上传数组:如何从后端获取错误?

问题描述 投票:0回答:2

我有一个非常简单的Angular应用程序,它使用post方法。该功能运行良好,但是由于我对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();
}

因此,无论我在控制器上返回什么,我在客户端中都得到相同的结果。这意味着我得到了结果:“已发送协议”。

但是理想情况下,我将获得结果列表(字符串数组中的每个条目一个),或者如果我在控制器中返回错误,则至少会得到一个错误。但我不知道该如何实现。

c# angular typescript
2个回答
0
投票

您可以使用ModelState将模式保留在控制器中的错误处理中,这样,您将确保所有错误返回都具有相同的结构。

ModelStateBadRequest一起使用将确保您的ModelState将被存储到代码中的err变量中:err => { this.finished.emit('Protocols sent: error' + err)},


0
投票

查看错误的一种方法是抛出exception,例如:

© www.soinside.com 2019 - 2024. All rights reserved.