Angular 2,无法遍历数组

时间:2017-06-18 19:35:31

标签: angular typescript firebase firebase-realtime-database rxjs

我订阅了一个FirebaseObjectObservable,以从我的firebase数据库中获取对象属性的值。此属性可以包含多个值,因此我将值存储在本地数组变量中。

但是我无法使用forEach迭代这个本地数组变量。所以我在console.log这个数组变量。这个变量似乎有json格式也许这就是为什么我无法迭代。请帮我找一种迭代这个变量的方法。

*代码和控制台图片:

Code Screenshot

Console Screenshot

*编辑*

我将subscribe方法中的代码转移到迭代。

getAttachments() {
this.assignment.subscribe(asnDetails => {
  if (asnDetails.fileKey) {
    this.fileKeys.push(asnDetails.fileKey);
    this.fileKeys[0].forEach(asnFileKey => {  // <---- shifted this forEach loop inside subscribe 
      this.asnFiles = this._getAsnService.getAssignmentFiles(asnFileKey);
      this.asnFiles.subscribe(file => {
        this.fileNames.push(file.name);
      });
    });
  }
});
}

3 个答案:

答案 0 :(得分:2)

this.fileKeys值仅在subscribe处理程序中可用。这是异步编程的基础。您的控制台日志紧接在订阅之后,并在订阅发生更改之前执行。

答案 1 :(得分:1)

屏幕截图中有一个嵌套数组。第一个长度为1,嵌套长度为长度为2。因此,您可以访问array[0].forEach(item => console.log(item))

答案 2 :(得分:0)

可悲的是,我无法发表评论。这不是角度或火力问题 它是一个普通的数组,基于你的控制台截图 你试过迭代this.fileKeys吗? 如果有人可以将此作为评论发布,我会将其删除作为答案。