微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

rxjs 6 observable<any> 到 observable<any[]>

如何解决rxjs 6 observable<any> 到 observable<any[]>

我使用 angular/fire valueChanges() 获取文档

const countries: Observable<any> = this.AngularFireStorage
      .doc('country/country')
      .valueChanges()

如果添加管道(tap(x => console.log(x))。它会记录

{ jp: {id: jp},us: {id: us}}

我想要的是添加 pipe(tap(x => console.log(x)) 并获取

{id: jp}
{id: us}

如何将国家:Observable 转换为国家:Observable

解决方法

代替pipe(tap(x => console.log(x))

写:

pipe(tap(x =>
    const result = [];
    Object.keys(x).forEach(key => result.push(x[key]));
    console.log(result);
))
,

您可以使用 Object.values 将对象的值转换为数组。您可以使用三种常见的高阶运算符(switchMapmergeMapconcatMap)中的任何一种将该数组转换为值流。

可能的样子:

const countries: Observable<any> = this.AngularFireStorage
  .doc('country/country').valueChanges().pipe(
    concatMap(Object.values),tap(console.log)
  )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。