angular2,为什么这个html5验证不能进出ngForm

时间:2016-08-02 20:28:03

标签: javascript html5 validation angular

我创建了一个用来证明这个问题的傻瓜。基本上,有三个<input type="text">元素,其中html5 pattern属性设置为^\d{2}[/]\d{2}[/]\d{4}$。这三个文本框之间的区别在于,一个直接位于<form>内,另一个位于子组件内,并且位于<form>标记内。最后一个文本框完全在<form>之外,我希望它们中的所有三个在模式验证上的行为相同,因为它们都有Angular2类(ng-touchedng-invalid等。 。)set,告诉我他们是Angular2控件。但问题是,即使输入值为ng-valid,根据以下正则表达式网站的有效匹配,它们也永远不会设置为ng-invalid并始终保持99/99/9999

  1. regexpal.com
  2. regexr.com
  3. 有趣的是,ng-untouchedng-pristine会在文本框收到或失去焦点时更新到正确的类。那我在这里错过了什么?为什么输入模式更改不会将css类更新为ng-valid?这是我提到的那个傻瓜:https://plnkr.co/edit/kW861I8OdnO9iR0328KP?p=preview

    更新

    如果这些文本框中的任何一个放在<my-app>又名根元素之外,它们工作正常,浏览器验证似乎认为该模式有效。我用txt 4更新了plunkr。

1 个答案:

答案 0 :(得分:1)

Plunker使用旧的表单模块(尝试了一些解决方法 - 没有帮助),我已经检查了新模块 - 它的工作原理。检查官方文档并添加以下内容:

    bootstrap(Application, [
    ...
    disableDeprecatedForms(),
    provideForms(),
    ...
    ]);