如何在内部使用地图订阅rxjs6

时间:2018-09-04 18:10:48

标签: rxjs angular6 rxjs6

我有一个返回Observable的服务,在获得响应后,我将响应映射并将结果分配给数组。

  this.dataService.fetchData().subscribe(response =>{
    [...this.DataMappingField ]=  response.map(({ ID: id, Name: name }) => ({ id, name }));
  });

在内部使用传播运算符进行订阅时,出现以下错误。

错误:类型'Modelclass'不存在属性'map'。

服务响应

[
  {ID: 6197, Name: 'A', desc: null,catergory:'lap'},
  {ID: 6198, Name: 'B', desc: null,catergory:'lap'}
]

在使用中,fetchData方法:

fetchData(): Observable<Modelclass> {
  return this.http
    .get<Modelclass>(REQUEST_URL)
    .pipe(
      tap(response => response)
    );
}

模型类:

export class Modelclass {
  ID: any;
  Name: string;
}

但是当使用方法进行调用时,以下代码可以正常工作

this.dataService.fetchData().subscribe(this.fetchResponse);

private fetchResponse(response): void => {
  [...this.DataMappingField ]= response.map(({ ID: id, Name: name }) => ({ id, name }));
}

1 个答案:

答案 0 :(得分:0)

我认为问题是响应键入不正确。 fetchData方法的定义应如下所示:

fetchData(): Observable<Modelclass[]> {
  return this.http
    .get<Modelclass[]>(REQUEST_URL)
    .pipe(
      tap(response => response)
    );
}

请注意,我正在使用 Modelclass[] 作为响应类型。