我的管道没有返回名字。 当我硬编码一个名字时它会回来。 为什么呢?
在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());
})
});
}
答案 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}}