Итак, скажем, у нас есть простой объект, который содержит строку для двух разных языков, например,
welcomeText = {"de": "Willkommen zurück!", "en": "Welcome back!"}
.
welcomeText
является свойством объекта Texts
, который содержит все тексты и получает асинхронно
(поэтому мне нужно позаботиться о возможных значениях undefined, следовательно, о работе elvis).
Теперь, в моем шаблоне angular2 я хочу показать текст на основе текущего выбранного языка.
Это работает (но не то, что мне нужно):
..
{{Texts?.welcomeText?.de}} // works, as well as {{Texts?.welcomeText?.en}}
..
Что я хочу, так это (поскольку язык можно изменить):
..
{{Texts.?welcomeText?[language]}}
..
К сожалению, это приводит к ошибке:
EXCEPTION: Template parse errors:
Parser Error: Conditional expression
{{Texts?.welcomeText?[language]}}
requires all 3 expressions at the end of the expression ..
Не знаю, как исправить эту ошибку. Я просто не уверен, использую ли я его неправильно или просто не намерен так работать. На данный момент я использую простой обходной путь, но я считаю его несколько уродливым, так как у меня есть вызов метода везде, где я хочу отображать текст:
..
{{getText('welcomeText')}}
..
..
getText(name : string){
if(this.Texts)
return this.Texts[name][this.language]
..
Это просто путь, или есть способ сделать это так, как я хочу, с помощью оператора elvis?
Большое спасибо за любые ответы!