2016-08-04 6 views
2

私はカスタムのangle2パイプを持っています。これは、uidの(文字列)をサービスを使ってUserInfoオブジェクトに変換します。angular2:オブジェクトを返すパイプのアクセスプロパティ

@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はUIDを返し、userInfoを通してそれをパイプした後、私は、オブジェクトを持っています。しかし、どうすればそのオブジェクトのプロパティにアクセスできますか?そのための構文はありますか? .Nameは機能しません。

答えて

6

:私は、このパラメータをチェックして、いくつかの特別なロジックを行うパイプで

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

パイプによって返されるオブジェクトの

+1

これは邪悪です。その構文について知らなかった。超便利! – perry

1

正しい方法であるかどうかわかりませんが、パイプに追加のパラメータを渡します。それはNameプロパティを表示します。私はちょうど

(event?.author | userInfo).Name 

は私がしたい正確に何していることが分かった

@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}; 
    } 
    } 
} 
関連する問題