首页 文章

将一个observable数组映射到switchMap内的一个对象数组

提问于
浏览
0

我目前正在使用switchMap和combineLatest将我的一个属性从引用更改为字符串 . 我设置了一个自定义管道(refPipe),它接受一个引用并返回该引用的observable . 下面的方法工作得很好,但我有另一个属性(data.employees),它是一个引用数组 . 在这种情况下,如何迭代该数组并将其转换为员工对象数组?

为了澄清,我通常在html中使用我的ref管道以及异步,但是当在表格中进行过滤和排序时这不起作用,所以我在将数据传递给表之前对数据进行了不同的映射 .

getClientEvents(): Observable<Event[]> {
    const eventsCollection = this.afs.collection<Event>('events');

    return eventsCollection.snapshotChanges().switchMap(events => {
      let arrayOfObservables = events.map(e => {
        const data = e.payload.doc.data() as Event;
        const id = e.payload.doc.id;
        return this.refPipe.transform(data.item).map(item => {
          data.item = item.name;

          data.employees // My array of references that I need to convert

          return { id, ...data };
        });
      });
      return Observable.combineLatest(arrayOfObservables);
    });
  }

1 回答

  • 0

    在这种情况下,如何遍历该数组并将其转换为员工对象数组?

    那你有两个选择 . 你可以输入断言:

    someVar: Array<Employee> = data.employees as Array<Employee>

    或者,如果您需要点击Employee构造函数:

    someVar: Array<Employee> = data.employees.map(e => new Employee(e.a, e.b))

相关问题