Angular中受限制的验证者名称

z

我创建了自定义验证器,并将其附加到输入元素的模型上,如下所示:

ngModel.$validators.required = function (value) {
  return !!value;
}

而且它不起作用-甚至没有调用函数。但是,将其重命名requiredalsoRequired-正确调用。

Angular对验证器命名有一些限制吗?

新开发者

没有足够的代码来确切地了解正在发生的事情,但是我可以猜出您的错误在哪里:

ngModel.$validators由决定对其进行设置的任何指令设置。例如,带有type="email"set的输入指令$validators.emailng-required指令集$validators.required,等等。

您可能已经ng-model在一个自定义指令上设置了一个,甚至在上也没有设置<input type="text">,它本身并没有注册验证器。

像您一样,自定义指令可以注册验证器:

link: function(scope, element, attrs, ngModel){
  ngModel.$validators.required = function (value) {
    console.log(value); // this will fire if parsers do not return undefined
    return !!value;
  };
})

并且如果与结合使用ng-model,应该可以正常工作:

<input type="email" ng-model="foo" my-dir>

http://plnkr.co/edit/1oQGRWZ0kWlV6Q7WjvrY?p=预览

要回答您的问题,$validators.required未调用函数的可能原因是因为您有另一个覆盖该值的指令-例如,ng-required

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章