角度从Observable <object []>

时间:2019-06-11 22:11:16

标签: angular

我已经创建了一个这样的界面:

interface channels {
    name: string;
}

我还有两个变量:

 channelCollection: AngularFirestoreCollection<channels>;
 channels: Observable<channels[]>;

我从Firebase接收数据,并将其存储在通道中。

然后,我必须遍历我的Observable<channels[]>,并且我想记录每个项目的键name的值。我尝试了以下方法:

this.channels = this.channelCollection.valueChanges();
this.channels.forEach(item => {
    const channelname = item.name;
    console.log('test', channelname);
});

不幸的是,它始终是不确定的。

2 个答案:

答案 0 :(得分:2)

显然,this.channelCollection.valueChanges()方法返回一个Observable。这意味着该方法是异步的,因此您必须订阅它并在适当的回调中进行操作。

this.channelCollection.valueChanges().subscribe(channels => {
  channels.forEach(item => {
    const channelname = item.name;
    console.log('test', channelname);
  });
})

答案 1 :(得分:0)

点击是执行副作用的合适rxjs运算符。试试这个:

import { tap } from 'rxjs/operators';

this.channels = this.channelCollection.valueChanges().pipe(
  tap(channels => {
     channels.forEach(item => {
       console.log('test', item.name);
     }
  )
).subscribe();