ch4*_*40s 10 key square-bracket angular
所以,假设我们有一个简单的对象,它包含两种不同语言的字符串
welcomeText = {"de": "Willkommen zurück!", "en": "Welcome back!"}.
该welcomeText是的属性Texts包含所有文本,并得到异步传输对象(所以我需要照顾可能未定义的值,因此猫王运营商).现在,在我的angular2模板中,我想基于当前选择的语言显示文本.
这是有效的(但不是我需要的):
..
{{Texts?.welcomeText?.de}} // works, as well as {{Texts?.welcomeText?.en}}
..
Run Code Online (Sandbox Code Playgroud)
我想要的是这个(因为语言可以改变):
..
{{Texts.?welcomeText?[language]}}
..
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致错误:
EXCEPTION: Template parse errors:
Parser Error: Conditional expression
{{Texts?.welcomeText?[language]}}
requires all 3 expressions at the end of the expression ..
Run Code Online (Sandbox Code Playgroud)
不知道如何解决这个错误.我只是不确定我是否使用它错了,或者它是不是打算像那样工作.目前我使用一个简单的解决方法,但我发现它有点难看,因为我有一个方法调用到处想要显示文本:
..
{{getText('welcomeText')}}
..
..
getText(name : string){
if(this.Texts)
return this.Texts[name][this.language]
..
Run Code Online (Sandbox Code Playgroud)
这是仅仅是要走的路还是有办法以我想要的方式做到这一点,用elvis算子?
非常感谢任何答案!
| 归档时间: |
|
| 查看次数: |
4871 次 |
| 最近记录: |