【问题标题】:Angular - Conditional name depending on variable valueAngular - 取决于变量值的条件名称
【发布时间】:2019-01-26 10:34:56
【问题描述】:

我的 Typescript 文件中有两个全局变量:

private myVar1 = 10;
private myVar2 = 150;

我有一个自定义元素,它在 html 中可以采用 [name] 属性。例如。这就是我的元素上的条件名称的样子:

<custom-element [name]="myVar1 === 10 ? 'tempName' : 'someOtherTempName'"></custom-element>

在上述情况下,名称将为 tempName,因为 myVar1 为 10。到目前为止一切顺利。

现在我的问题是:当数字(1 或 2)来自另一个变量时,我如何引用 myVar1myVar2

我尝试了以下方法,但没有成功:

<custom-element [name]="('myVar'+index) === 10 ? 'tempName' : 'someOtherTempName'"></custom-element>

【问题讨论】:

    标签: javascript html angular typescript conditional


    【解决方案1】:

    您可以通过将这两个元素收集到一个数组(或字典或任何集合)中并使用 index 检索它们来实现这一点

    例如添加这个字典

    let vars = {1:var1, 2:var2}
    

    并与

    一起使用
    <custom-element [name]="vars[index] === 10 ? 'tempName' : 'someOtherTempName'"></custom-element>
    

    【讨论】:

    • JS中有“这种东西”。
    • 他要问的不是“让处理器根据索引生成变量检索”。你已经改变了请求,以应对你对他所问内容的定义。有一种方法可以获得动态变量名称,这就是我所说的“这样的事情”。不是你的假设。抱歉,如果不清楚。
    • 不,没有设计用于生成变量访问的处理器。如果您指的是建议的解决方案 - 那不是重新处理。这是在运行时完成的。不是说你的不是一个好的解决方案(它实际上比我的好),它只是与手头的那一点无关。
    • 再一次,“这样的事情”指的是 OP 的请求,而不是你重新定义的假设。
    • @trichetriche,你是对的。我转移了 OP 的问题。
    【解决方案2】:

    只需使用带有数组表示法的函数即可。

    getVar(index: number) {
      return this['myVar' + index];
    }
    
    <custom-element [name]="getVar(index) === 10 ? 'tempName' : 'someOtherTempName'"></custom-element>
    

    Stackblitz

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 2020-03-02
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多