javascript - Angular 5 服务正在从 api 返回数据,但组件没有向我显示数据

标签 javascript angular rxjs observable

Angular 5 中使用 typescript 和 rxjs 使用 observables 的大部分内容与 Angular 2、4 非常相似 - 但我似乎无法理解为什么我的组件代码没有显示数据。

这是我的代码

型号:

export class arsCodes {
  iD: number;   
  aRSCode: string;
  aRSDescription: string;
  class: string;
  victimFlag: string;
  startDate: string;
  endDate: string;
  createdByUserID: string;
  createdOnDateTime: string;
  modifiedByUserID: string;
  modifiedOnDateTime: string;
}

工作服务

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};

getArsCodesApi(search: arsCodes) {
  return this.http.post(this.serviceUrl, JSON.stringify(search), httpOptions)
    .map((response: Response) => {
      response;
      console.log(response) // WORKS
    })
}

上面console.log中的“响应”返回{ Status: "success", Message: "", data: Array(16) }

然后

 data: Array(16) 
 >0: {ID: 4443, ..... }  
 //etc.. 

但是,在我从订阅中的组件文件进行的调用中,它是未定义

arsCode: ArsCode[];

this.arsSevice.getArsCodesApi(this.model).subscribe(
  result => {
    //this.arsCode = result
    console.log(result);
  },
  error => {
    console.log(error);
  }
)

我需要在组件中执行什么操作才能检索数据?

最佳答案

问题是您没有在服务的 .map() 函数中返回任何内容(不需要使用 HttpClient)

但无论如何,你必须像这样返回:

return this.http.post(this.serviceUrl, JSON.stringify(search), httpOptions)
  .map((response: Response) => {
    console.log(response);
    return response;
  });

关于javascript - Angular 5 服务正在从 api 返回数据,但组件没有向我显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47584628/

相关文章:

javascript - 对象不支持 ie 8 中的属性或方法 'addEventListner'

html - ionic2 contenteditable div 不适用于 iOS 设备

RxJS 等待 observable 完整完成

没有在每个路由请求上调用 Angular 4 Component ngOnInit

javascript - 更改 angular-cli 中组件的默认文件夹

angular - ngrx 效果 : Dispatch Empty Action

Angular rxjs 订阅

javascript - 如何在 IE11 中使用 TextEncoder?

javascript - 发布依赖于返回 true 的 javascript 函数的表单

javascript - 按索引调整数组大小