如何在component.ts中检查响应状态以在Angular 5中调用另一个服务

时间:2018-03-21 11:39:32

标签: angular typescript angular5

我正在通过以下代码捕获我的服务中的状态代码:

add(new: Add): Observable<Response> {
  return this.http
   .post(this.addURL, new , httpOptions)
     .map((response: Response) => {
      if (response) {
       if (response.status === 200) {
        return [{ status: response.status, response: <Response>response.json() }]
                }
            }
        })
        .catch(this.handleError);
}

这是我的component.ts代码,我想在成功添加

后调用列表
  addDetails(): void {
var new = this.form.value.array;
new = JSON.stringify(this.form.value.array);
this.addService.add(new)
  .subscribe(
  resultArray => this.Response = resultArray,
  error => console.log("Error :: " + error),    
  )
  if(Response.status ===200){
    this.getList();   
  }}

但我收到以下错误: 财产状况&#39;类型&#39; typeof Response&#39;

上不存在

2 个答案:

答案 0 :(得分:0)

尝试返回Object而不是Array:

return { status: response.status, response: <Response>response.json() }

当您访问Array项时,您必须使用该项的索引。 因此,在您的情况下,当您想要获取状态代码时,您可以进入订阅方法

this.addService.add(_new)
  .subscribe(
  resultArray => {
    this.Response = resultArray
    if(resultArray[0].status ===200){
      this.getList();   
    }
  },
  error => console.log("Error :: " + error))

注意:不要忘记订阅使用asynchrone方法。您永远无法访问它返回外部的响应。

答案 1 :(得分:0)

您正试图从Response CLASS获取您的状态,而不是它的实例。注意大写和typeof Response部分错误。

我认为if (resultArray[0].status === 200)应该可行,但我不明白你为什么要返回一个数组,所以它可能是if (result.status === 200)