2017-08-17 15 views
0

私はTSと角度4を初めて使いました。角度のある素材2 MdSnackBarの中に翻訳されたCLOSEの単語をユーザーに表示する必要があります。私はあなたがこのようなコード内からNGX-翻訳翻訳サービスを呼び出すことができることを理解しました:角度のある素材2でngx-翻訳するMdSnackBar

this.translate.get('ERROR.CLOSE').subscribe((res: string) => { 
    console.log(res); 
}); 

事は、私がMdSnackBarと呼ばれる角度材料2要素内にこれを示すことができる必要があるということです。

私はこのようにそれを実行したい:

this.snackBar.open(error, this.getCloseWord(), { 
    duration: 10000, 
}) 

private getCloseWord() { 
    this.translate.get('ERROR.CLOSE').subscribe((res: string) => { 
     console.log(res); 
    }); 
    } 

しかし、私は、観察のうち、正しい文字列値を返すようにgetCloseWord()メソッドを作成する方法がわかりません。次のように

答えて

1

試してみてください。

public someMethod() { 
    const error = ...some error...; 
    ... 
    this.translate.get('ERROR.CLOSE').subscribe((res: string) => { 
    this.snackBar.open(error, res, { duration: 10000 }); 
    }); 
    ... 
} 

「に.get()」関数が加入している 『GET』とき観察可能がそうちょうどあなたのスナックバーを開いて返します。翻訳が利用可能であることがわかります。次のように複数の観察者との


ソリューションは次のようになります。

public someMethod() { 
    const newObserver = new ReplaySubject(); 
    let error = null; 
    let close = null; 

    this.translate.get('ERROR.MESSAGE').subscribe((translation: string) => { 
     error = translation; 
     newObserver.next(); 
    }); 

    this.translate.get('ERROR.CLOSE').subscribe((translation: string) => { 
     close = translation; 
     newObserver.next(); 
    }); 

    newObserver.subscribe(() => { 
     if(error && close) { 
      this.snackBar.open(error, close, { duration: 10000 }); 
     } 
    }); 
} 

または最善の解決策、それらをマージすることです:

import "rxjs/add/observable/forkJoin"; 
... 
public someMethod(){ 
    const firstTranslationObs = this.translate.get('ERROR.MESSAGE'); 
    const secondTranslationObs = this.translate.get('ERROR.CLOSE'); 

    Observable.forkJoin([firstTranslationObs, secondTranslationObs]) 
     .subscribe(results => { 
     let error= results[0]; 
     let close = results[1]; 
     this.snackBar.open(error, close, { duration: 10000 }); 
     }); 
} 
+0

ありがとうございました!それは魅力のように機能します!同時に2つの要素の翻訳が必要な場合はどうすればいいですか? 2つのパラメータを要求するリクエストを調整するにはどうすればよいですか? –

+0

私は私の答えを編集しました。あなたの質問だったらいいなと思います。 –

関連する問題