0

我的 map/filter 函数没有返回我从内存服务中接收到的对象。

this.myService.getEventMedia().subscribe(
  (response) => {
    return response.map((res) => {
      this.returnObj = res.dataObj.filter((data) => {
       if(data.id === id) {
         console.log('event is ', data)
         return data;
       }

      })
    })
  }
);

在此响应和/或 ngAfterViewInit() returnObj 之后是未定义的控制台日志记录。我来自过滤器功能的数据具有价值,我可以控制台记录 data.id

我的模型如下所示

export interface Model {
  id: number;
  name: string;
  data: Data[];
}
4

2 回答 2

1

也许将您的服务订阅更改为此?

this.myService.getEventMedia().subscribe(
  (response) => {
    this.returnObject = response.map((res) => {
      return res.dataObj.filter((data) => {
       if(data.id === id) {
         console.log('event is ', data)
         return data;
       }
      })
    })
  }
);

这样,您的返回对象就会被设置到地图上。现在返回您的地图对您没有任何帮助。

于 2018-06-12T19:18:34.273 回答
0

您不应该从传递给的回调方法返回值subscribe,因为它们在方法签名中都是无效的。

如果您要做的是以某种方式转换服务的响应,然后将转换后的值分配给 returnObj 类成员,那么您应该执行以下操作:

this.myService.getEventMedia()
  .pipe(
      map(response => this.transformResponse(response))
   )
  .subscribe(mappedResponse => this.returnObj = mappedResponse);

private transformResponse(response:Object): Object {
   // your transformation logic goes here
}
于 2018-06-12T17:24:48.267 回答