获取列表firebase的列表

时间:2018-04-25 21:12:06

标签: angular firebase ionic-framework firebase-realtime-database angularfire2

我正在使用Firebase上的数据库创建Ionic应用程序,所以我在Firebase中有这样的东西,我使用angularfire2来获取数据  enter image description here

我在获取paises方面没有问题,但我已尝试获取jugadores的列表,但我什么也没得到。

这是我的.ts

export class HomePage {
paises: Observable<any[]>
constructor(public navCtrl: NavController, db: AngularFireDatabase) {
this.paises = db.list('paises').valueChanges();

 }
 }

这是我的.html

<ion-content *ngFor="let pais of paises | async">
<ion-item-group>
  <ion-item-divider color="light">{{pais.nombre}}</ion-item-divider>
  <ion-item>{{pais.jugadores.Nombre}}</ion-item>
</ion-item-group>

我确实得到pais.nombre,但当我试图获得pais.jugadores时,我得到的只是空格。所以,如果有人可以帮我提供有关如何获取此信息的信息,因为我在线搜索并没有。

1 个答案:

答案 0 :(得分:1)

我假设你的数据结构是这样的。

<!-- paises > collection, iterable -->
<ion-content *ngFor="let pais of paises | async">    
<ion-item-group>
  <ion-item-divider color="light">{{pais.nombre}}</ion-item-divider>

  <!-- pais.jugadores > not collection, not iterable -->
  <ion-item>{{pais.jugadores.Nombre}}</ion-item>
</ion-item-group>

“paises”是可以使用* ngFor迭代的集合。

{
    "jugardor0001": {
        "Nombre": "alice"
        "score": 100
    },
    "jugardor0002": {
        "Nombre": "bob"
        "score": 80
    }
}

pais.jugadores是无法迭代的对象

[{
    "key": "jugardor0001",
    "value": {
        "Nombre": "alice",
        "score": 100
    }
}, {
    "key": "jugardor0002",
    "value": {
        "Nombre": "bob",
        "scoe": 80
    }
}]

我们希望像这样将对象更改为集合

//pipe.keys.ts
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'keys'})
export class KeysPipe implements PipeTransform {
  transform(value, args:string[]) : any {
    let keys = [];
    for (let key in value) {
      keys.push({key: key, value: value[key]});
    }
    return keys;
  }
}

//app.module.ts
...
import {KeysPipe} from './pipe.keys';
...
@NgModule({
  imports: [
    ... your import
  ],
  declarations: [
    ... your component
    KeysPipe
  ],
....

使用“Pipe”将对象数组更改为集合

<ion-content *ngFor="let pais of paises | async">
<ion-item-group>
  <ion-item-divider color="light">{{pais.nombre}}</ion-item-divider>  

  <!-- using | keys pipe to change object array to collection -->
  <ion-item *ngFor="let jugador of pais.jugadores | keys">
    {{ jugador.key }}: {{ jugador.value.Nombre }}
  </ion-item>
</ion-item-group>

你的组件就像

export class Sugerir

stackblitz示例是here