2016-07-31 4 views
0

私はng2Translateを見ているので、Ionic2/Angular2プロジェクトのローカリゼーションに使用できます。私はそれを設定して作業し、ドキュメントに応じて使用するときにマークアップで正しい値を得るようにしています...Angular2 ng2Translate TranslateServiceメソッドから文字列値を取得する方法

<div>{{myVal}}</div> 
<div>{{ 'COMMON.HELLO' | translate:{value: "world"} }}</div> 

と私の文字列の値はきれいになります。

私は今、コードの中でいくつかの文字列を取得し、これらをコンポーネント変数に割り当てたいと思っていました。これを次のようにマークアップでバインドすることができます。その後、

@Component({ 
templateUrl: 'build/pages/sidemenu-page/sidemenu-page.html', 
pipes: [TranslatePipe] 
}) 
export class SideMenuPage { 
    public rootPage = SideMenuPage; 

    public myVal: string; 

    constructor(private menu: MenuController, private nav: NavController, private tranlate: TranslateService){ 
    let temp = tranlate.get("MYTESTVAL"); 
    this.myVal = temp.first(); // <-- type error first does not return a string 
    } 

し、それを使用

...

<div>{{myVal}}</div> 

tranlate.getが観測RxJs返します(私はちょうどを見て始めています、私は前にそれらを使用していない) - と私は見ることができませんそれから "生の文字列値"を得る方法。イベントfirstはまだ観察可能なものを返すようです。

誰も私に文字列を取得する方法を教えてもらえますか? RxJsに読む

+0

'this.myVal =一時をお試しください;'と '{{myVarに|を非同期}} ' – yurzui

答えて

0

、それは私が

temp.subscribe(x => this.myVal = x) 

が、これは確かに任意のレートで動作するようには思えそれを行うために必要なすべてのように見えます。

より良い[UPDATE] イベントは、本方法がある。.. this.myVal = tranlate.instant("MYTESTVAL");

0

あなたはこの試してみました:

@Component({ 
    templateUrl: 'build/pages/sidemenu-page/sidemenu-page.html', 
    pipes: [TranslatePipe] 
}) 
export class SideMenuPage { 
    public rootPage = SideMenuPage; 

    public myVal: string; 
    public sub: any; 

    constructor(private menu: MenuController, private nav: NavController, private tranlate: TranslateService){ 
    this.sub = tranlate.get("MYTESTVAL").subscribe(value=>this.myVal=value,error=>console.log(error)); 
    } 

    ngOnDestroy(){ 
    this.sub.unsubscribe(); 
} 
} 
関連する問題