Angularjs 有条件电子邮件验证

Angularjs 有条件电子邮件验证,angularjs,email-validation,Angularjs,Email Validation,如何基于另一个范围变量的存在有条件地使用angular的电子邮件验证?我查阅了文档,但我能找到的触发电子邮件验证的唯一方法是使用input type=“email”,在这种情况下,由于另一个指令依赖于type=“text”,因此我无法使用 理想情况下,我希望根据另一个范围变量的值分配ng match=“email”,或者在提交时通过编程验证电子邮件。理论上,我可以只使用一个单独的电子邮件验证正则表达式,但如果可能的话,我想使用Angular的验证,因为我在其他地方都使用它 谢谢 -- 编辑:为了

如何基于另一个范围变量的存在有条件地使用angular的电子邮件验证?我查阅了文档,但我能找到的触发电子邮件验证的唯一方法是使用
input type=“email”
,在这种情况下,由于另一个指令依赖于
type=“text”
,因此我无法使用

理想情况下,我希望根据另一个范围变量的值分配ng match=“email”,或者在提交时通过编程验证电子邮件。理论上,我可以只使用一个单独的电子邮件验证正则表达式,但如果可能的话,我想使用Angular的验证,因为我在其他地方都使用它

谢谢

--
编辑:为了澄清,我特别希望在我最终使用的任何解决方案中使用angular的本机电子邮件验证。

您应该在电子邮件输入字段中使用
ng required
ng pattern

<input type="text" ng-model="email" ng-required="emailRequired" ng-pattern="emailPattern" />
})()

以下小提琴实现了您想要的:


您能更改输入的类型吗?如果输入应验证为电子邮件,则将其类型设置为电子邮件,否则将其设置为文本

<input type="{{vm.type}}" ng-model="vm.text" />
<select ng-model="vm.type">
  <option>text</option>
  <option>email</option>

文本
电子邮件

只需为此编写一个自定义指令是的,我知道我可以这样做,但如果我采用该方法,我如何在该指令中使用angular的本机电子邮件验证?您可以为您的指令设置比电子邮件指令更高的优先级。(假设您在指令的链接功能中处理流程)。因此,电子邮件验证将在自定义指令处理之前进行。好的,但我只希望电子邮件验证在某些时候进行。如果它发生在我的指令之前,它不会一直执行吗?或者,您的意思是使用第二个指令来覆盖字段在不是电子邮件的情况下将获得的$invalid设置吗?如果您希望行为严格基于您的适当条件,请将您的输入设置为
type=“text”
,并在指令中实现一个regexp来模拟电子邮件。对,但是,如果不显式复制angular的正则表达式,就无法使用它吗?不,因为angular的正则表达式电子邮件验证仅适用于type=“email”输入。您可以直接在angular的文档示例上尝试。这里:好的,但我的问题是“我如何有条件地使用angular的电子邮件验证”,而不是不同的电子邮件验证。但从你说的看来,我不能那样使用它。
<input type="{{vm.type}}" ng-model="vm.text" />
<select ng-model="vm.type">
  <option>text</option>
  <option>email</option>