2017-06-19 2 views
1

In meiner Komponente habe ich einen Dienst injiziert, der die aktuelle Sprache als beobachtbar bereitstellt. In dieser Komponente Vorlage, ich auf die Benutzer locale Preise mehrmals basierend bin Anzeige, auf diese Weise:

<p>{{price.toLocaleString(languageService.getCurrentLanguage() | async, { style: 'currency', currency: 'EUR' })}}</p>

Das Problem ist, dass ich wie 10 async Anrufe alle über meine Vorlage haben, und obwohl languageService Tatsächlich gibt das Thema als eine gemeinsame Observable, effektiv erstellen einen gemeinsamen Stream statt eines anderen Streams jedes Mal, wenn die async Rohr abonniert, ich bin bereit zu glauben, es gibt einen besseren Weg, dies zu tun, da draußen.

Antwort

0

die beobachtbare auf ein Feld und binden zuweisen, anstatt auf dieses Feld:

<p>{{price.toLocaleString(currentLanguage() | async, { style: 'currency', currency: 'EUR' })}}</p> 
constructor(languageService:LanguageService) { 
this.currentLanguage = languageService.getCurrentLanguage(); 
} 
+0

ich darüber nachgedacht, aber in diesem Fall, was erhalte ich außer der Kürze? – Sammy

+0

Das 'getCurrentLanguage()' wird nur einmal aufgerufen. –

+0

In Ordnung, ich werde das kaufen: D In diesem Fall, denkst du, es wäre es wert, eine Pipe zu schreiben, um den gesamten '.toLocaleString'-Aufruf auf einmal zu machen? – Sammy