我目前正在使用switchMap和combineLatest将我的一个属性从引用更改为字符串。我设置了一个自定义管道(refPipe),它接受一个引用并返回该引用的observable。下面的方法工作得很好,但我有另一个属性(data.employees),它是一个引用数组。在这种情况下,如何迭代该数组并将其转换为员工对象数组?
为了澄清,我通常在html中使用我的ref管道以及异步,但是当在表格中进行过滤和排序时这不起作用,所以我在将数据传递给表之前对数据进行了不同的映射。 / p>
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);
});
}
答案 0 :(得分:0)
在这种情况下,如何迭代该数组并将其转换为员工对象数组?
你有两个选择。您可以输入assert:
someVar: Array<Employee> = data.employees as Array<Employee>
或者,如果您需要点击Employee构造函数:
someVar: Array<Employee> = data.employees.map(e => new Employee(e.a, e.b))