【问题标题】:Angular dynamic attribute binding via function通过函数进行角度动态属性绑定
【发布时间】:2019-09-09 10:16:16
【问题描述】:

我想将一系列功能绑定到一系列按钮的[disabled] 属性。我有一系列按钮和一系列功能:

<mat-button-toggle 
  *ngFor="let button of buttons" 
  [disabled]="this['auth' + button.authLevel + '()']">
  {{button.displayName}}      
</mat-button-toggle>


auth100(){
    let var = complicatedStuff();
    return var;
}
auth200(){
    return false;
}

(是的,buttons 是一个 JSON,例如 [{authLevel: '100', displayName: 'Button Name'}, ...] 等)

这似乎不起作用。如果我尝试使用变量而不是函数,例如auth100 = false;"this['auth' + button.authLevel]",它确实有效,但我希望能够将它绑定到一个函数。目前我在想我应该只做auth100var = auth100(); 并绑定auth100var 变量而不是函数,但我觉得你应该能够绑定一个函数,这将是正确的方法,但是如何?

【问题讨论】:

  • 你为什么不去想[disabled]="function(button.authLevel)"这样的东西?我可以想象你需要什么样的验证来禁用按钮。

标签: angular data-binding


【解决方案1】:

只需更改放置括号的位置即可调用该函数。它们不是您访问属性的密钥的一部分。

  [disabled]="this['auth' + button.authLevel]()">

See live demo (stackblitz)

【讨论】:

  • 这似乎不承认它是一个函数,它绑定为ng-reflect-disabled="auth100() {return tru"(是的,像那样切断)。
  • 不要忘记末尾的括号。见live example
猜你喜欢
  • 2019-06-13
  • 2014-09-23
  • 2016-01-05
  • 2018-03-04
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
相关资源
最近更新 更多