So lassen Sie uns sagen, dass wir ein einfaches Objekt bekam, die für zwei verschiedene Sprachen wie
welcomeText = {"de": "Willkommen zurück!", "en": "Welcome back!"}
eine Zeichenfolge enthält.angular2 elvis Operator und Dirac-Notation/Objektzugriff durch Schlüssel
Die welcomeText
ist eine Eigenschaft von Texts
Objekt, das alle Texte hält und geliefert wird asynchron (so muß ich mögliche undefinierte Werte kümmern, daher den elvis-Operator). Jetzt, in meiner angular2 Vorlage möchte ich den Text basierend auf einer aktuell ausgewählten Sprache zeigen.
Dies funktioniert (aber nicht das, was ich brauche):
..
{{Texts?.welcomeText?.de}} // works, as well as {{Texts?.welcomeText?.en}}
..
Was ich will, ist dies (da die Sprache geändert werden kann):
..
{{Texts.?welcomeText?[language]}}
..
Leider führt dies zu einem Fehler:
EXCEPTION: Template parse errors:
Parser Error: Conditional expression
{{Texts?.welcomeText?[language]}}
requires all 3 expressions at the end of the expression ..
Keine Ahnung, wie Sie diesen Fehler beheben können. Ich bin mir nur nicht sicher, ob ich es falsch gebrauche oder ob es einfach nicht so funktionieren soll. Im Moment verwende ich eine einfache Abhilfe, aber ich finde es etwas hässlich zu sein, da ich einen Methodenaufruf habe überall will i Text angezeigt:
..
{{getText('welcomeText')}}
..
..
getText(name : string){
if(this.Texts)
return this.Texts[name][this.language]
..
Ist das nur der Weg zu gehen oder ist es eine Möglichkeit, Mach es so, wie ich es möchte, mit dem elvis-Operator?
Vielen Dank für die Antworten!