管道从Firebase获取数据

时间:2017-03-23 16:22:58

标签: angular firebase firebase-realtime-database ionic2 angular2-pipe

我的管道没有返回名字。 当我硬编码一个名字时它会回来。 为什么呢?

在html中:

{{photo.uid | userName}}

管:

import { Pipe, PipeTransform } from '@angular/core';
import { UserData } from './../providers/user-data';

@Pipe({name: 'userName'})
export class UserNamePipe implements PipeTransform {
  name: string;

   constructor(private userData:UserData){}

  transform(value:any, args:string[]) {
   this.userData.getSpeseficUserData(value).subscribe((data:any) => {
     this.name = data.firstName;
     return this.name;
   });
 }
}

getSpeseficUserData():

getSpeseficUserData(uid:any){
  return Observable.create((observer: any) => {
    firebase.database().ref('users/' + uid).once('value').then((snapshot) => {
        observer.next(snapshot.val());
    })
  });
}

1 个答案:

答案 0 :(得分:2)

在行动中看到它:plunker

首先,您必须使用transform方法返回一个observable并使用async管道来显示您的数据:

管:

transform(value:any, args:string[]) {
   return this.userData.getSpeseficUserData(value).map((data:any) => {
     this.name = data.firstName;
     return this.name;
   });
 }

模板:

{{photo.uid | userName | async}}