我尝试禁用某个按钮,如果它所在的表单无效。但是,由于某种原因,与表单关联的$ error数组中包含十个无用错误的列表(因此按钮总是 off ),所有这些都具有以下形状:
{
"$validators": {},
"$asyncValidators": {},
"$parsers": [],
"$formatters": [
null
],
"$viewChangeListeners": [],
"$untouched": true,
"$touched": false,
"$pristine": true,
"$dirty": false,
"$valid": false,
"$invalid": true,
"$error": {
"required": true
},
"$name": "",
"$options": null
}
如您所见,使用空的$ name属性,没有其他有用的信息。
答案 0 :(得分:1)
我找到了一个解决方案,但不是最初发布的问题。问题是我正在使用ngIf隐藏表单的某些部分,包含输入。但在某些时候,我想到了将这个改为ngShow的神奇想法,直到一段时间之后我才意识到这种后果。所以有问题,Angular会考虑隐藏的元素,但不考虑不存在的元素进行表单验证。这听起来很合理。
但是,这是我第一次开始调试此应用程序中的表单属性,并且不知道$ name的原因是空的。可能是因为我使用"控制器作为"语法而不是将内容附加到$ scope?也许是因为这个,但无论如何我认为这是Angular的一个缺点。