angular - 如何在角度组件之前捕获已解析的数据?
问题描述
我正在订阅一个无法更改的 http 方法。但是,我需要在解析中调用此方法,对其进行转换,然后在组件中访问它。
但是,由于解析返回“可观察”,我不在哪里捕获数据并返回“更改”的数据。
例如
this.activatedRoute.snapshot.data['data']
- 这就是组件现在访问数据的方式。但我想在“数据”到达组件之前对其进行转换。
问题是 :
我知道运营商以及如何转换,我问我应该在哪里做?我无法在 resolve 函数中执行此操作,因为它返回 observable 本身,并且我无法在返回 observable 的 http 方法中执行此操作,因为我无法更改它。我正在寻找可以捕获它的管道中的一些钩子。
解决方案
如果要转换数据,可以使用 routeStateSerializer 之类的东西,并在路由更改时直接存储路由参数或数据。为此,请查看ngrx/router-state或ngrx/router。但是我建议您使用以下方法并在可观察流到达您的组件时访问数据。如果您的注射剂中的 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 函数。
推荐阅读
- javascript - 强制输入的 onChange 事件气泡到父窗体,并将值存储在状态中
- outlook - Outlook Interop AdvancedSearch 调用因筛选器而失败
- python - 尝试更新现有订阅时无效的 trial_end
- c - 如何在C中获取未知长度的字符串?
- php - 简单的地图类不会像部署时那样失败
- java - 有没有办法比较管道之间的 JCas 数据?
- excel - 如何将文本从一个单元格复制到同一列的所有空单元格中?
- google-apps-script - 如何使用 Google Apps 脚本在 Google 文档中的段落前设置一定数量的空格或缩进
- google-sheets - 需要一个简单的单行来根据该行是否包含“文本”来突出显示整行(不区分大小写)
- r - For-Loop 中的 For-Loop 似乎跳过了迭代 (r)