【问题标题】:Angular Observable: modify data before resolveAngular Observable:在解析之前修改数据
【发布时间】:2017-11-17 22:23:34
【问题描述】:

我尝试在通过这种方式解析之前转换数据,但订阅者获得了未转换的数据。

@Injectable()
export class OrderService {
    getAll(): Observable< Array<Order> > {
        let url = 'http://fakeapi.com';
        return this.http.get( url )
          .pipe(
            tap( (data: any) => {
                /*
                * MAKE DATA TRANSFORMATIONS HERE
                */
            }),
            catchError( (err: any, caught: Observable<{}>) => {
              console.log('error while GET : ' + url);
              console.warn(err);
              return caught;
            })
          );
    }
}

这是一个订阅者:

this._orderService.getAll().subscribe( data => {
  this.orders = data;
  console.log('\nplanning-overview-page : _orderService.getAll : data ', data);
});

【问题讨论】:

  • 你可以使用.map()

标签: angular rxjs observable


【解决方案1】:

map 是用于转换可观察流中的值的运算符,您必须确保它返回一个值。

map(data => {
    // do your transformations
    return data;
});

【讨论】:

  • 它有效,但有一个注意事项:在我添加 map() 之后,错误“属性 'map' 在类型 'Observable' 上不存在”。有错误stackoverflow.com/a/41014638/7455192的解决方案@
  • 是的,它需要像所有其他运算符一样被导入,因为你已经使用了 tap 就知道了
猜你喜欢
  • 2019-01-07
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2020-07-09
  • 2018-09-29
  • 2013-04-06
相关资源
最近更新 更多