2016-08-02 12 views
0

問題を示すためにplunkrを作成しました。基本的に3つの<input type="text">要素があり、html5 pattern属性はすべて^\d{2}[/]\d{2}[/]\d{4}$に設定されています。これらの3つのテキストボックスの違いは、一方が直接<form>の内側にあり、もう一方が子コンポーネントの内側にあり、それが<form>タグの内側にあることです。最後のテキストボックスは完全に<form>の外にあります。私はAngular2クラス(ng-touchedng-invalidなど)を持っているので、3つすべてがパターン検証で同じように動作することを期待しています。 。興味深いことにangular2、なぜこのhtml5検証がngFormの中で働いていないのですか

  1. regexpal.com
  2. regexr.com

:しかし、問題は、彼らがng-validに設定されておらず、常に入力値は、次の正規表現のウェブサイトによると、有効な一致である99/99/9999場合でもng-invalidまま決してされていることです、ng-untouchedおよびng-pristineは、テキストボックスがフォーカスを受け取ったりフォーカスを失ったりすると、適切なクラスに更新されます。では、私はここで何が欠けていますか?入力パターンの変更によって、CSSクラスがng-validに更新されないのはなぜですか?ここで私が述べたplunkrです:これらのテキストボックスのいずれかがルート要素別名<my-app>の外側に配置されている場合はhttps://plnkr.co/edit/kW861I8OdnO9iR0328KP?p=preview

更新

が、彼らはうまく動作し、ブラウザの検証が有効であるとのパターンを認識しているようです。私はtxt 4とplunkrを更新しました。

+0

それを試してみるhttp://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html – rashfmnb

+0

@rashfmnbそれは宣言的なアプローチであり、私のソリューションはhtml5検証を使用して構築されています。いくつかのテキストボックスよりもはるかに複雑ですが、私はこれを使って問題を実証しました。それはいくつかの場所では動作しますが、上記のケースでは動作しません。 – RoninCoder

+0

実際に私も開始時にテキストボックスを使用しようとしましたが、上記のリンクで最終的にリリースされる可能性があります。私はお気に入りとしてあなたの質問をマークしたので、他の人が啓発を受けるかもしれません。 – rashfmnb

答えて

1

Plunkerは古いフォームモジュールを使用しています(いくつかの回避策を試みましたが、役に立たなかった)、新しいモジュールでチェックしました。公式ドキュメントをチェックして、次の行を追加します。

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

私はちょっと勘違いしていたので、新しいRC4を試してみるために新しいダミープロジェクトを設定していました。残念ながら、私は 'AnimationBuilder'とRC4で消えたと思われるCSSトランジションを使用していたので、それをアップグレードすることはできませんでした。そのクラスが利用可能であれば願うだけです。 – RoninCoder

関連する問題