【问题标题】:How do I access this information in Angular? [closed]如何在 Angular 中访问这些信息? [关闭]
【发布时间】:2018-08-27 15:22:15
【问题描述】:

我无法访问此对象中的信息

ts 文件

 import { Component } from '@angular/core';
 import { AngularFireDatabase, AngularFireObject } from 
         'angularfire2/database'
 import { Observable } from 'rxjs';

 @Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
 title:AngularFireObject<any>;
 message: Observable<any>;

   constructor(private db: AngularFireDatabase){
     this.title = db.object('message');
     this.message = this.title.valueChanges();
    }

 }

和html文件:

<p> {{message | async | json}} </p>

但是我在我的 HTML 页面中得到了这个:

{
    "-LKbddlCLBERGd6y4MD2": {
        "email": "rakiubl97@gmail.com",
        "message": "sa",
        "timeStand": "2018/8/23 16:38:12",
        "username": "Rakibul"
    },
    ... this repeats a similar object many times
}

我想一一访问它们。我喜欢访问的任何内容。

【问题讨论】:

  • 你写过代码吗?
  • 我添加了照片。请立即查看
  • 您添加了 Firebase 数据的照片,而不是您已经尝试过的照片
  • 我也添加了代码。请检查
  • 嗨@Moumitaakter!欢迎来到 StackOverflow!请澄清您在问题中的要求。您是在询问如何在 messages 属性中访问数据库中的所有数据,还是在询问如何仅访问 messages 属性中的单个属性?

标签: angular firebase firebase-realtime-database angularfire2


【解决方案1】:

您可以使用for-in 循环访问对象的属性。您可以将对象的内容推送到一个数组中,然后在该数组上运行 *ngFor 以访问任何属性。

for (var key in message){
  console.log('Email: ', message[key].email);    

  // push message[key] into an array
  messages.push(message[key]);
}

HTML:-

<p *ngFor="let m of messages"> {{m.email}} </p>

运行代码sn-p:-

var message = {
  'lkdp': {
    email: 'email 1'
  },
  'lkdq': {
    email: 'email 2'
  },
}

for (var key in message){
  console.log('Email: ', message[key].email);
}

【讨论】:

  • Thaks Ankit 但它只能访问本地对象。我想访问数据库对象。
  • @Moumitaakter - 然后您需要进行 API 调用。我以为你已经在前端有这些数据了
  • 是的,我有数据
  • @Moumitaakter - 那么问题出在哪里。上述解决方案对您来说应该很好,不是吗?当然,如果这是一个类属性,您必须将 message 转换为 this.message。此外,您始终可以将 var 关键字转换为 const
【解决方案2】:

注意:请说明您在问题中的要求。您是否在询问如何一次访问所有数据?或者,您是在问如何只访问一个属性?下面的解决方案是回答前一个问题(又名如何一次访问messages 属性中的所有数据?)。


那是因为你使用了AngularFireDatabase#object 方法,它只返回一个对象。

您正在寻找的是AngularFireDatabase#list 方法:

import { Component } from '@angular/core';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { Observable } from 'rxjs';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title: AngularFireObject<any>;
  message: Observable<any>;

  constructor(private db: AngularFireDatabase){
    this.title = db.list('message');
    this.message = this.title.valueChanges();
  }
}

【讨论】:

  • 对不起,埃德里克。我是 StackOverflow 的新手。这是我的第一个问题。我在问如何访问消息属性中的单个数据?我已经弄清楚了如何一次访问整个消息属性数据。
  • @Moumitaakter 很抱歉,您是只访问一个特定项,还是要访问属性中的随机项?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 2019-08-12
  • 2013-06-29
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
相关资源
最近更新 更多