問題を示すためにplunkrを作成しました。基本的に3つの<input type="text">
要素があり、html5 pattern
属性はすべて^\d{2}[/]\d{2}[/]\d{4}$
に設定されています。これらの3つのテキストボックスの違いは、一方が直接<form>
の内側にあり、もう一方が子コンポーネントの内側にあり、それが<form>
タグの内側にあることです。最後のテキストボックスは完全に<form>
の外にあります。私はAngular2クラス(ng-touched
、ng-invalid
など)を持っているので、3つすべてがパターン検証で同じように動作することを期待しています。 。興味深いことにangular2、なぜこのhtml5検証がngFormの中で働いていないのですか
:しかし、問題は、彼らが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を更新しました。
それを試してみるhttp://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html – rashfmnb
@rashfmnbそれは宣言的なアプローチであり、私のソリューションはhtml5検証を使用して構築されています。いくつかのテキストボックスよりもはるかに複雑ですが、私はこれを使って問題を実証しました。それはいくつかの場所では動作しますが、上記のケースでは動作しません。 – RoninCoder
実際に私も開始時にテキストボックスを使用しようとしましたが、上記のリンクで最終的にリリースされる可能性があります。私はお気に入りとしてあなたの質問をマークしたので、他の人が啓発を受けるかもしれません。 – rashfmnb