首页 > 解决方案 > 将两个动态变量合并为一个以输出单个结果 - 打字稿

问题描述

我尝试将两个变量合并或组合成一个新变量。

我的片段看起来像这样:

在 TS(组件)文件中

this.setTextLang='_pt';

在 HTML 中

<div *ngFor="let el of exlists"> <ion-label> {{el.menu_name+(setTextLang) }} </ion-label> </div>

但这当然没有用。

目前的输出:(它连接输出 - 这是我不期待的)

 USA_pt
 Nepal_pt

Expecting output

编译器应该理解{{el.menu_name+(setTextLang) }}{{el.menu_name_pt }}& 给出el.menu_name_ptinside的值*ngFor

有人对我有其他解决方案吗?非常感谢提前!如果我的问题不清楚,请告诉我

标签: angulartypescript

解决方案


好吧,我想我现在看到了你的问题。

正如@Simonare 正确指出的那样,括号内的属性访问将是自然的解决方案。但是,由于 Angular 模板语法的限制,这不适用于此用例。在 '{{}}' 模板语法中,您不能评估括号访问器内的字符串变量。

基本上,您不能这样做,{{el['menuName' + setTextLang]}}因为无法在该范围内评估“setTextLang”。

因此,一种可能的解决方案是在您的模型中使用辅助方法为您进行访问:

getProperty(obj: any, property: string): string {
  return obj[property + this.setTextLang];
}

然后在您的模板中:

<div *ngFor="let el of exlists">
  <div>{{getProperty(el, 'menuName')}}</div>  
</div>

这是一个 stackblitz 演示:https ://stackblitz.com/edit/angular-an2xiz


推荐阅读