【问题标题】:Can't show my array data in my page from database in angular 5?无法在我的页面中以角度 5 显示我的数组数据?
【发布时间】:2018-07-27 09:36:03
【问题描述】:

我希望你们一切都好,所以我有一个小问题,我从 firebase 获取数据,我有一个包含数组的数组,我想在我的视图中显示它,但我不能,我会的编写我的代码并解释我以后想要实现的目标。

这是我数据库中的数据:

posts 
     --- 1 
          --- puslisher -- "Erick" 
          --- content :   "Something is written here"
          --- comments 
                      --- 1
                           --- comment : "Yes"
                           --- commentator : "Patrick"  
                      --- 2 
                           --- comment : "I dont think so "
                           --- commentator : "Sarah"
     --- 2 
          --- puslisher -- "Patrick" 
          --- content :   "News here .."
          --- comments 
                      --- 1
                           --- comment : "Yes"
                           --- commentator : "Ines"  

我在 app.component.ts 中获取数据:

export class AppComponent implements OnInit {

    pubs:Observable<any[]>;
    constructor(private db:AngularFireDatabase){
    }
    ngOnInit(){
       this.pubs = this.getData('/posts');
    }

    getData(path):Observable<any[]>{
       return this.db.list(path).valueChanges()
    }

}

这是我的 HTML 代码:

<div *nfFor="let post of pubs | async ">
    <p>publisher {{post.publisher}}</p>
    <p>content : {{post.content}}</p>
    <div>{{post.comments}}</div>
    <ul> 
       <li *ngFor="let cmt of post.comments" >{{cmt.comment}}</li>
    </ul>
</div>

但我的控制台出现错误:

ERROR TypeError: Cannot read property 'comment' of undefined

但是当我只写 {{cmt}} 而不是 {{cmt.comment}} 时,我会得到这样的结果:

publisher: Erick
content : Something is written here 

,[object Object],[object Object]

- 
- [object Object]
- [object Object]



publisher: Patrick
content : News here 

,[object Object]

- 
- [object Object]

这意味着我正在获取我的对象但第一个总是空的,我不知道为什么,我想显示我的评论文本。

我希望我能很好地解释我的问题,任何帮助将不胜感激。

【问题讨论】:

  • 你能检查一下未定义的 cmt 是否有效吗?类似 cmt 的东西? cmt.comment : '没有数据'
  • 您可以像这样{{cmt | json}} 使用 json 管道查看对象中的内容
  • Antoine : 我试过了,我猜我得到了正确的数据,例如我得到这个是为了 Patrick 的评论:{ "comment":"Yes","commentator": "Patrick" },你认为'"'引起了问题吗?

标签: javascript angular firebase firebase-realtime-database angular5


【解决方案1】:

听起来您只需要safe navigation operator,因此模板在定义之前不会尝试访问对象的属性。

尝试以下方法:

<li *ngFor="let cmt of post.comments" >{{ cmt?.comment }}</li>

【讨论】:

  • 好吧,不知何故你是对的,我正在使用你的方法获取我的数据,但是我在请求数组时收到了一个额外的空对象,我不知道我从哪里得到它,但它是导致问题的原因,我仍然不知道如何解决。感谢您宝贵的时间,先生。
  • 很高兴我能帮上忙!考虑接受和/或支持答案,以便其他人知道我的答案很有帮助(向上箭头)或您的问题已得到解答(复选标记)。欢迎来到 SO :)
猜你喜欢
  • 1970-01-01
  • 2020-01-03
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2016-07-23
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多