首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngFor在ngFor内部引起错误

ngFor在ngFor内部引起错误
EN

Stack Overflow用户
提问于 2017-08-04 03:30:25
回答 2查看 433关注 0票数 1

我有一个火基json对象,它由部分组成。在各节内也有段线程。我试图迭代这些部分,然后是线程。问题是我得到了这个错误

InvalidPipeArgument:管道'AsyncPipe'的' Object‘

当我为线程添加第二个*ngFor时

这是我的HTML

代码语言:javascript
复制
<div *ngFor="let section of forumSections | async">
  <div>Header title: {{section.sectionTitle}}</div>

<div *ngFor="let thread of section.sectionThreads | async">
  <div>Thread title: {{thread.title}}</div>
</div>

和我的防火墙数据库中的JSON对象

代码语言:javascript
复制
 "forum" : {
"sections" : {
  "Y6ML8AA9V5RB2sKFmKndnHFqRw23" : {
    "sectionThreads" : {
      "-zqehRPSbalaburpm2dW" : {
        "description" : "Sup ladies",
        "title" : "elo mm9"
      },
      "-zqehRPSbalajYGfm2dW" : {
        "description" : "Sup boi",
        "title" : "elo m8"
      }
    },
    "sectionTitle" : "Official"
  }
}

}

我是不是遗漏了什么?任何帮助都是非常感谢的,谢谢。

更新:

forum.ts

代码语言:javascript
复制
    import {Component, OnInit} from '@angular/core';
import {IonicPage} from 'ionic-angular';
import {FirebaseListObservable} from "angularfire2";
import {ForumServiceProvider} from "../../providers/forum-service/forum-service";

@IonicPage()
@Component({
  selector: 'page-forum',
  templateUrl: 'forum.html',
})

export class ForumPage implements OnInit {

  forumSections: FirebaseListObservable<any>;

  constructor(public forumService: ForumServiceProvider) {
  }

  ngOnInit() {
    this.loadForumData();
  }

  loadForumData() {
    this.forumSections = this.forumService.getInitialSections();
  }

}

论坛服务

代码语言:javascript
复制
import {Injectable} from '@angular/core';
import 'rxjs/add/operator/map';
import {AngularFire, FirebaseListObservable} from "angularfire2";

@Injectable()
export class ForumServiceProvider {

  constructor(public af: AngularFire) {
  }

  /**
   * Get the forums front facing sections
   * @returns {FirebaseListObservable<any>}
   */
  getInitialSections(): FirebaseListObservable<any> {
    return this.af.database.list('/forum/sections');
  }

}
EN

回答 2

Stack Overflow用户

发布于 2017-08-04 03:56:32

异步管道需要一个可观察的,确保您的响应是可观察的,因为您使用的是防火墙,所以应该是FirebaseListObservable。

在您的例子中,我认为如果删除第二个| async中的ngFor,它将修复您的问题,因为它是一个数组。

票数 0
EN

Stack Overflow用户

发布于 2017-08-04 04:43:52

从您的评论来看,您的第一个ngfor应该可以工作,第二个不起作用,因为它不再是一个可观察的,也不是一个数组。因此,您需要将第二个管道转换为一个数组,还需要删除第二个中的asyc管道。

代码语言:javascript
复制
this.af.database.list('/forum/sections/')
.map(sections=>sections
              .map(section=>Object.keys(section.sectionThreads)
                            .map(key=>section.sectionThreads[key])))

我还没有测试它,它也不是类型记录,你可能需要做一些转换

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45497820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档