如何在 ng-messages 指令中插入表达式?

How to interpolate expressions in ng-messages directive?

假设我有一个表单名称 "signupForm"。当我在按钮上使用 ng-disabled 指令时(在无效的情况下禁用表单),我使用 ng-disabled="{{formName}}.$invalid">(表单名称包含值 signupForm

当我在浏览器中检查按钮时,上述指令的计算结果为 ng-disabled="signupForm.$invalid">。太棒了。问题是,当我尝试在 ng-messages 指令中使用相同的表达式时,例如:ng-messages ="{{formName}}.$error"> 表达式未被插入。因此,如果我在 div 上使用该指令并在浏览器中检查它,我将其视为: <div ng-messages="{{formName}}.$error"></div> 而我希望它显示为 <div ng-messages="signupForm.$error"></div>。但这并没有发生。

那么如何使 ng-messages 指令插入表达式并正确显示它呢?我已经用 AngularJS 1.4.7 & 1.5.0-rc.1 测试了这个问题,并且它们都存在这个问题。任何帮助表示赞赏。谢谢。

ng-messages=this[formName].$error

ng-messages 不允许在属性值中进行插值。
但我们可以传递要评估的表达式。
this in html 表示当前范围,它也包含有关带有验证的表单的所有信息。您可以登录并查看自己。

ng-messages="this[formName][fieldName].$error"   
ng-messages="this[formName].$error"   

会用,对我有用