AngularJS自定义表单验证错误消息

dei*_*tch 27 angularjs angularjs-directive

有没有办法在自定义表单验证中传递错误消息?

例如,我有一个检查用户名的指令.有三种可能的结果:

  1. 这是有效的
  2. 它无效,因为它不是一个好的用户名("this.is-invalid")
  3. 它无效,因为它已被使用

我有一个像(简化伪html)的指令:

<input type="text" namecheck></input><span ng-show="name.$error.namecheck">You had an error {{ error }}</span>
Run Code Online (Sandbox Code Playgroud)

在我的自定义指令中,我可以做到

// check for a conflict and valid name here
ngModel.$setValidity("namecheck",false);
Run Code Online (Sandbox Code Playgroud)

但是,如何传递错误消息,指出问题是冲突还是无效的名称?有什么相似的ngModel.$setValidityErrorMessage()吗?

dei*_*tch 45

正如我在评论中写的那样,我只是想通了.我只需要使用不同的有效性标志.没有什么说我必须使用相同的键$setValidity()作为指令的名称!

<span ng-show="name.$error.nameinvalid">This is not a valid username, it must be alphanmueric</span>
<span ng-show="name.$error.nametaken">Sorry, the username {{ name }} is already taken</span>
Run Code Online (Sandbox Code Playgroud)

并在指令中

// if I got a 409
ngModel.$setValidity("nametaken",false);
// if I got a 400
ngModel.$setValidity("nameinvalid",false);
Run Code Online (Sandbox Code Playgroud)

该名称$error 错误消息!

  • 您也可以在指令中绑定模型,并在此处添加错误消息(如果您有许多来自服务器的错误消息) (3认同)
  • 你能举个例子吗? (2认同)