【问题标题】:Adding backend errors to myFormItem.$error without invalidating form?在不使表单无效的情况下将后端错误添加到 myFormItem.$error?
【发布时间】:2015-07-15 03:44:43
【问题描述】:

我正在使用 ng-messages 显示组件的各种验证消息,如下所示:

<ng-messages for="myForm.myField.$error" ng-if="myForm.myField.$touched">
    <ng-message when="required">My Field required</ng-message>
    <ng-message when="foo">Foo Message</ng-message>
    <ng-message when="backend">{{myForm.backendMessages.myField}}</ng-message>
</ng-messages>

在处理来自服务器的错误消息期间,我将自定义错误消息添加到组件中:

myField.$setValidity("backend", false);
myField.$setTouched(true); // So ng-messages is shown

就将消息放在我想要的位置而言,这工作正常,但这显然将表单标记为“无效”,这意味着当客户端验证被触发时,我不能使用简单的逻辑来禁用表单提交。

有没有一种“幸运”的方式可以添加到myField.$error 而不会实际使组件和表单无效?或者,一旦用户弄脏表单,我是否必须重置整个“有效”标志,这会使消息消失?如果是后者,最好的方法是什么?

使用 Angular 1.4.1 FWIW。

【问题讨论】:

  • 困惑...你到底在找什么?
  • 理想的方式是让事情进入 $error 而不必将字段标记为无效,这种方式不会在客户端验证运行后立即喷出。

标签: javascript angularjs forms validation


【解决方案1】:

我还没有使用ng-messages 组件,但听起来使用novalidate 属性可以工作。

<form method="POST" action="xyz" novalidate> ... </form>

这样组件验证,浏览器不会触发原生验证错误

【讨论】:

  • 不,和那个无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
相关资源
最近更新 更多