【问题标题】:rxjs 6 observable<any> to observable<any[]>rxjs 6 observable<any> 到 observable<any[]>
【发布时间】:2021-06-25 19:31:20
【问题描述】:

我使用 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

【问题讨论】:

    标签: angular rxjs angularfire rxjs6


    【解决方案1】:

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

    这可能是这样的:

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

    【讨论】:

      【解决方案2】:

      而不是pipe(tap(x =&gt; console.log(x))

      写:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2018-08-14
        • 2018-08-30
        • 1970-01-01
        • 2018-07-16
        相关资源
        最近更新 更多