angular2:管道返回对象的访问 属性

angular2: Access property of pipe returning object

我有一个自定义的 angular2 管道,它使用服务将 uid(字符串)转换为 UserInfo 对象。

@Pipe({name: 'userInfo'})
export class UserInfoPipe implements PipeTransform {

    constructor(public _userService: UserService) {
    }

    transform(uid:string) : any {
        /*let users = this._userService.users.filter((u)=> {
            return u.uid==uid;
        });
        if(users.length==1) return users[0];
        return null;*/

        return {"Name":"hans","Age":13};
    }
} 

在我的组件中有一个绑定:

 <Label row="4"  text="Author: {{event?.author | userInfo | .Name}}" class="small-spacing"></Label>

event?.author returns UID,通过 userInfo 管道传输后,我有一个对象。但是我怎样才能访问那个对象的属性呢?有语法吗? .Name 无效。

不确定这是否正确,但我会向您的管道传递额外的参数。

<Label row="4"  text="Author: {{event?.author | userInfo : {"field": "Name"} }}" class="small-spacing"></Label>

在管道中我检查了这个参数并做了一些特殊的逻辑:

@Pipe({name: 'userInfo'})
export class UserInfoPipe implements PipeTransform {

  constructor(public _userService: UserService) {
  }

  transform(uid:string, params) : any {
    if (params.field && params.field == 'Name') {

        /*let users = this._userService.users.filter((u)=> {
            return u.uid==uid;
        });
        if(users.length==1) return users[0];
        return null;*/

        return {"Name":"hans","Age":13};
    }
  }
} 

我刚发现

(event?.author | userInfo).Name   

完全符合我的要求:它显示管道返回的对象的 Name 属性。