【问题标题】:Angular2 How to display error message from backendAngular2如何显示来自后端的错误消息
【发布时间】:2017-10-17 09:23:23
【问题描述】:

我想在引导警报中显示错误消息。我使用 angular2 作为前端,使用 lumen 作为后端。

前端

<div class="alert alert-danger"> 
    // Display error message here 
</div>

我希望前端显示验证函数的响应

public function uploadImage(Request $request)
{
    $this->validate($request, [

        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:60000',

    ]);
}

组件.ts

uploadFile(): void {

let file = this.fileInput.nativeElement;
if (file.files && file.files[0]) {
  let fileToUpload = file.files[0];
  this.getInfoService
    .uploadImage(fileToUpload)
    .subscribe(
      data => console.log("DATA", data),
      err => console.log(err),
      () => console.log("()",'yay')
    );
}

}

为我服务

uploadImage(fileToUpload: any) {

let input = new FormData();
input.append("image", fileToUpload);
return this.http.post('http://Api.app/api/v1/uploadImage', input)
  .map(
    (response: Response) => {
      console.log("Upload img service", response);
    }
  );

}

回应

【问题讨论】:

  • 您是否阅读过处理来自可观察对象的错误?

标签: laravel angular lumen


【解决方案1】:

我会将错误消息(如果返回)设置为一个角度变量,然后检查该变量是否存在以决定是否显示它。

<div *ngIf="errors" class="alert alert-danger"> 
    {{ errors }} 
</div>

组件:

uploadFile(): void {
  this.errors = null;

  let file = this.fileInput.nativeElement;

  if (file.files && file.files[0]) {
    let fileToUpload = file.files[0];
    this.getInfoService
      .uploadImage(fileToUpload)
      .subscribe(
        data => {
          console.log("DATA", data)
        },
        err => {
          this.errors = err
        }
      );
  }
}

要正确显示所有消息,您可能需要遍历 JSON 响应并连接字符串,或者将各个消息作为 &lt;li&gt; 元素添加到无序列表中。

【讨论】:

    【解决方案2】:

    在您的 http 请求中,您必须添加一个 catch,如下所示:

    uploadImage(fileToUpload: any) {
    
    let input = new FormData();
    input.append("image", fileToUpload);
    return this.http.post('http://Api.app/api/v1/uploadImage', input)
      .map(
        (response: Response) => {
          console.log("Upload img service", response);
        })
      .catch(this.handleError);
    }
    

    然后添加handleError函数:

    private handleError(error: any) {
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 'Server error';
        console.error(errMsg); // log to console instead
        return Observable.of(error);
    }
    

    这个 handleError 函数会从服务器端返回整个响应。您可以轻松地从响应正文中提取错误消息并将其分配给变量。

    然后您可以使用插值在引导警报中显示错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      相关资源
      最近更新 更多