2016-07-12 15 views
1

私は本当に単純な変換パイプangle2をしようとしています。しかし、私は仕事を約束する方法が間違っているかもしれません。この考え方は、PouchDBのドキュメントを呼び出す非同期サービスから言語パラメータを取得することです。約束内側戻しが動作しません角2パイプ - 約束の中で値を返すことができません

{ 
title: { 
    fr: "text in french", 
    en : "text in english", 
... 
} 

: はFYI、データは次のように整理されています。 htmlテンプレートは空です。私は理由を知りません。

@Pipe({name: 'translate'}) 

export class Translate { 

    lang:any; 

    constructor(private interfaceService: Interface){} 

    transform(obj) { 

    this.interfaceService.getParams().then((data) => { 
     return obj[data.language] 
    }).catch((error) => { 
     console.log(error); 
    }); 

    } 

} 

私は約束の外でリターンを入れた場合、それは動作します:あなたの助け

答えて

3

ため

@Pipe({name: 'translate'}) 

export class Translate { 

    lang:any; 

    constructor(private interfaceService: Interface){} 

    transform(obj) { 
    return obj.en 

    } 

} 

感謝をあなたが関数から結果の約束を返す必要があります。

export class Translate { 
    // ... 
    transform(obj) { 
    return this.interfaceService.getParams().then((data) => { 
     return obj[data.language] 
    }).catch((error) => { 
     console.log(error); 
     throw error; // or `return Promise.reject(error);` 
    }); 
    } 
} 
+0

ありがとうございますが、私は問題があります。テンプレート内に[オブジェクトオブジェクト]を返します! '' __ zone_symbol__state ':true、 "__ zone_symbol_value": "Text in english"} '単純な文字列を返そうとしましたが、結果は同じです。 – katzu

+1

@katzu私はあなたが非同期パイプが必要だと思うhttps://angular.io/docs/ts/latest/guide/pipes.html#!#async-pipe –

+0

Yeapはそれほど感謝しています、ただ非同期パイプを使用しています – katzu

関連する問題