2

如果按钮所在的表单无效,我正在尝试禁用按钮。但是,由于某种原因,与表单关联的 $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 属性为空,并且没有其他有用信息。

4

1 回答 1

1

我找到了一个解决方案,虽然不是最初发布的问题。问题是我故意使用 ngIf 隐藏表单的某些部分,其中包含输入。但是在某个时候,我想到了将其更改为 ngShow 的神奇想法,直到一段时间后我才意识到后果。所以出现了问题,Angular 考虑隐藏元素而不是不存在的元素来进行表单验证。这听起来合乎逻辑且合理。

但是,这是我第一次开始在这个应用程序中调试表单属性,并且不知道为什么 $name 是空的。难道是我使用“controller as”语法而不是将这些东西附加到 $scope 上?也许是因为这个,但无论如何我认为这是 Angular 的一个缺点。

于 2015-04-29T18:16:13.493 回答