Angular 中的条件数据绑定与管道(翻译)变量

Conditional data binding in Angular with piped (translate) variables

嘿 Whosebug / Angular 社区!

我有一个关于组件数据绑定的小问题。 我组件上的 [value] 可以有两个不同的 strings/labels 作为值。由于该应用程序知道更多语言,因此我为此使用了翻译管道。 代码摘录可能非常不言自明。

<my-component [value]="bool1 ? {{'GLOBAL.YES' | translate }} : {{'GLOBAL.NO' | translate }}"></my-component>

导致: 未捕获错误:模板解析错误: 解析器错误:在需要表达式的地方得到了插值 ({{}})

感觉好像有语法的东西,我漏掉了。尝试了很多不同的组合。当我尝试不带括号的 value 时,我最终得到以 'bool1 ? ...' 开头的整个字符串作为值(这绝对有意义)。

也许有人知道如何解决这个问题?

提前谢谢大家。

如果您正在使用 ngx-translate,您可以像这样在 .ts 中这样做:

<my-component [value]="getTranslation(bool1)" />

并且在你的 ts

  private getTranslation(value: boolean): string {  
    return value ? translate.instant("GLOBAL.YES"): translate.instant("GLOBAL.NO")
  }

您不能在 属性 绑定中进行插值。 您可以使用 JFPicard 显示的方法。

或者,如果您确实需要在模板中执行此操作,请执行以下操作:

<my-component [value]="(bool1 ? 'GLOBAL.YES' : 'GLOBAL.NO') | translate"></my-component>

您可以使用以下方式

<component [value]="(bool1 ? 'GLOBAL.YES' : 'GLOBAL.NO') | translate"></component>