2016-12-07 4 views
-1

私はコード内の文字列を変換するこの方法を私に提供するIonic2でng-translateを使用しています。現在のところ、このようなサービスを使用する必要があります。typescriptのasyncパイプに相当する

translate.get('ERROR').subscribe((res: string) => { 
    //The string with code 'ERROR' is translated in res 
    this.errorString = res; 
}); 
.... 
//Later on, when error happens: 
alert(this.errorString); 

多くのファイルには、多くの文字列、アラート、通知があります。それぞれについてgetメソッドが観測可能であることを購読するのは非常に面倒です。 HTMLでは、人は簡単、これは非同期パイプを使用して購入を避けることができ、あるいはこのような場合には、観察に明示的なサブスクリプションを必要としないパイプを翻訳:

<div>{{ 'ERROR' | translate}}</div> 

は、私がこれを行うことができます方法はありますtypescriptファイル内の文字列と同じレベルのシンプルさ?理想的に、私はこれを達成suscribeする速記を持っていると思います例えば:

alert(idealTranslateFunction('ERROR')); 
+0

* "observableに明示的にサブスクリプションする必要はありません" * - そうです。 *これは ' async'はします!* – jonrsharpe

+0

私はそれが ' async'は行います。開発者として、そのパイプを使用して、私は明示的に購読コードを書く必要はありません。私はこのコードのような省略形を探しています。 – Ari

+0

さて、オブザーバブルを取った独自の 'asyncAlert'関数を書くことができます。例えば、あなたがそれをやめることを止めるものはありません。ほかのリファクタと同様に、共通コードを抽出するだけです。 – jonrsharpe

答えて

0

は、コードがasync機能であることを考えると、それはそれ以外のsubscribe(...)を使用する必要があります

this.errorString = await translate.get('ERROR').toPromise(); 

することができます。

+0

ちょうど不思議なことに、 'await'は何をしますか?約束は解決されるのだろうか? – Ivaro18

+1

@ Ivaro18はい、そうです。 [async/await](https://basarat.gitbooks.io/typescript/content/docs/async-await.html)の詳細を参照してください。 – estus