2017-06-26 12 views
1

私のアプリケーションでng-translateのTranslatePipeを独自に実装しようとしています。 そのために、TranslateServiceを内部で呼び出してデータを返すTranslateWrapperPipeというパイプを作成しました。角度:カスタムパイプ内でng-translateサービスをラップする

export class TranslateWrapperPipe implements PipeTransform { 
constructor(private translateService : TranslateService){ 
} 

    transform(value: any, args?: any): any { 
    if(value){ 
    console.log(value) 
    return this.translateService.get(value) 
    } 
} 
} 

しかし、私はオブジェクトを取得しています。 もし私がこのようなことをしたら、this.translateService.get(value).subscribe((res) => console.log(res))私は結果を得るが、元の呼び出し元に戻す方法は?

答えて

0

非同期パイプでカスタムパイプを使用することで問題が解決しました。パイプから観測値が返されるたびに、asyncパイプを追加する必要があるようです。

+0

AsyncPipeは不要なオーバーヘッドを提供します。実際には、パイプは純粋でなく、AsyncPipeからのいくつかのアイデアを組み込むだけです。 1つの観測可能な値と文字列の値に限定されているので、はるかに簡単になるはずです。 – estus

+0

こんにちはestus私は問題を解決するためのより良い方法に私を導くことができますか? –

+0

はい、AsyncPipeの内部で行われるようにobservableへのサブスクリプションを作成してください。それはすでに簡単で十分であり、カスタムパイプはさらに単純になります。私はクラスを書くことはできませんが、具体的な実装上の問題がある場合は、新しい質問をしてください。 – estus

関連する問題