【问题标题】:Async pipe with rxjs带有 rxjs 的异步管道
【发布时间】:2019-12-23 06:05:50
【问题描述】:

我在异步管道中有一个小问题 这是我的情况, 我需要在 html 的异步管道中运行嵌套的 observables,因为我使用推送策略并且我不想使用一些变通方法或更改检测器参考。 我的问题是,当我运行下面的代码时,只调用了第一个 observable 我应该添加返回语句吗?或者是什么问题?

Ts 代码

this.http.getUsers(criteria)
.pipe(map(data=>{
data.users.map(user=>{
this.http.getUserData(user.id)
.pipe(map(res=>{user.data=res.data}))}}

HTML代码

<div *ngFor=let user of users$ | async> </div>

【问题讨论】:

    标签: angular typescript rxjs observable async-pipe


    【解决方案1】:

    你想做一个 switchMap,你需要为 users$ 属性分配一个 observable。

    users$ = this.http.getUsers(criteria).pipe(
      switchMap(user => this.http.getUserData(user.id)),
      map(res => res.data)
    );
    

    【讨论】:

    • 我用 switch 地图替换了地图,我确实将用户分配给 observable,但仍然只有第一个 observable 被调用
    • 将map切换成forkjoin。
    • 好吧,我忘了一个大括号,它按照成功运行的 adrian 代码工作,并且调用了两个 observables 但用户没有加载到 html 中
    • 您是否对用户模板变量进行了任何操作以将其显示为
      {{ 用户 | json }}
      ?您的模板代码只是为每个用户创建一个空 div,并且不使用 user 变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2018-02-03
    • 2020-03-26
    • 2018-12-28
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多