2017-02-25 39 views
0

我正在使用datatables(datatables.net),并且想从Firebase中使用AngularFire2获取对象的数据。将AngularFire的firebaseListObservable对象转换为纯文本对象

但是,这会得到一个FirebaseListObservable对象,我不知道如何在datatables中使用它,我以前使用过普通对象。

有没有办法将FirebaseListObservable转换为普通对象以便以这种方式使用?

component.html

<sa-datatable 
      [options]="{ 
       data: rfis, 
       columns: [ 
       {data: 'rfiNo'}, 
       {data: 'title'}, 
       {data: 'status'} 
       ] 
      }" 
      filter="true" tableClass="table table-condenced table-striped table-bordered" 
      paginationLength="true" tableClass="table table-striped table-bordered table-hover" 
      width="100%"> 
      <thead> 
       <tr> 
       <th data-class="expand"><i 
        class="fa fa-fw fa-user text-muted hidden-md hidden-sm hidden-xs"></i> 
        Lot # 
       </th> 
       <th> 
        Lot Name 1 
       </th> 
       <th> 
        Lot Name 2 
       </th> 
       </tr> 
      </thead> 
      </sa-datatable> 

component.ts

import { Component, OnInit } from '@angular/core'; 
import {FadeInTop} from "../shared/animations/fade-in-top.decorator"; 
import {RfisData} from "../providers/rfis-data"; 

@FadeInTop() 
@Component({ 
    selector: 'app-lots', 
    templateUrl: './lots.component.html', 
    providers: [RfisData] 
}) 
export class LotsComponent implements OnInit { 
    rfis: any; 
    data: any; 

    constructor(
    public rfisService: RfisData 
) {} 

    ngOnInit() { 
    this.rfis = this.rfisService.getRfis(); 
    this.data = this.rfisService.getData(); 
    } 
} 

provider.ts

import { Injectable } from "@angular/core"; 
import { AngularFire, FirebaseListObservable } from 'angularfire2'; 

@Injectable() 
export class RfisData { 
    rfis: FirebaseListObservable<any>; 
    data: any; 

    constructor(
    af: AngularFire 
) { 

// this just to compare object types 
    this.data =[ 
     { 
      "rfiNo": "Frist RFI", 
      "status": "open", 
      "title": "Its a fucking RFI dude" 
     } 
     ];  

    this.rfis = af.database.list('/rfis'); 

    } 

    getRfis(){ 
    console.log(this.rfis); 
    return this.rfis; 
    } 

// this just to compare object types 
    getData(){ 
    console.log(this.data); 
    return this.data; 
    } 

} 

从控制台日志结果表明将两个结果的目的,一个是firebaseListObservable对象,另一个是普通的[Object]。

谢谢。

回答

1

这为我工作:

af.database.object('/some/ref/to/object') 
    .map(val => Object.assign(new MyPlainObject(), val); 
+0

感谢罗宾。简单的工作方案:) – npasco