如何在角度组件之前捕获解析数据?

时间:2018-08-06 05:15:56

标签: angular typescript

我正在订阅一个无法更改的http方法。但是,我需要在解析中调用此方法,对其进行转换,然后在组件中对其进行访问。

但是,由于解析返回“ observable”,因此我不在哪里捕获数据并返回“已更改”的数据。

例如 c-这是组件现在访问数据的方式。但是我想在“数据”到达组件之前对其进行转换。

问题是:

我了解运营商以及如何转型,我问我应该在哪里做?我无法在resolve函数中执行此操作,因为它返回了可观察的自身,而我无法在返回可观察的http方法中执行此操作,因为我无法更改它。 我正在寻找可以捕获它的管道中的挂钩。

1 个答案:

答案 0 :(得分:0)

如果要转换数据,可以使用诸如routeStateSerializer之类的方法,并在路线更改时直接存储路线参数或数据。为此,请查看 ngrx /路由器状态 ngrx /路由器状态。但是我建议您使用以下方法并在可观察到的流到达您的组件时访问数据。如果您的HTTP功能在您的可注射式中,例如ApiService看起来像这样:

httpFunction: Observable<YourDataType> () {
  return this.http.get<YourDataType>(`yourApi`);
}

您可以像这样通过RxJS 6访问组件中的可观察数据

// this.apiService.
httpFunction().pipe(
  map((data: YourDataType) => {
    // Do something with your data here
    // and don't forget to return it
  })
);

在RxJS 5中或在没有管道的情况下使用map函数。