angularjs 1.5のネストされたフォームには妥当性検査の問題があり、issue in github about itがあります。親フォームに影響を与えずにネストされたフォームを検証する
しかし、そのトピックの2人は解決策を提供し、そのうちの1つはngFormTopLevelディレクティブであるangularjsコアに、もう1つはisolate-formというユーザーによって提供されています。
しかし、どちらもこの状況に対応できず、私のために働くことはできません...少なくとも!
このような構造とさせて頂きます:
<ng-form name="X1" novalidate>
<ng-form name="X2" novalidate isolate-form>
<input name="Input01" ng-model="input1" required />
<p ng-show="X2.Input01.$touched && X2.Input01.$invalid">input is not valid</p>
<input name="Input02" ng-model="input2" required />
<input type="button" id="ButtonX2" value="Submit Nested Form" ng-disabled="X2.$invalid" />
</ng-form>
<input name="Input03" ng-model="input3" required ng-minlength="5" />
<input type="button" id="ButtonX1" value="Submit Nested Form" ng-disabled="X1.$invalid" />
</ng-form>
TL; DRは: ButtonX1は、ネストされたフォームの検証に依存し、それはいけません!
テストケース1:
ステップ1:任意のテキストと5つ以上の文字でINPUT3記入してください。
期待:ButtonX1は有効にする必要があります。
結果:ButtonX1はまだ無効です。
テストケース2:
ステップ1:任意のテキストとINPUT1塗りつぶし。
手順2:input2に任意のテキストを入力します。
予想:ButtonX2が有効になっている必要があります。
結果:ButtonX2が有効です。
テストケース3:
ステップ1:任意のテキストと5つ以上の文字でINPUT3記入してください。
手順2:input1に任意のテキストを入力します。
手順2:input2に任意のテキストを入力します。
予想:ButtonX1とButtonX2が有効になっている必要があります。
結果:ButtonX1とButtonX2が有効になっています。
であり、もう1つの問題は、Input01が無効の場合、ネストされたフォーム内のPタグが表示されないことです。 isolateFormとngFormTopLevelの両方を試しましたが、両方ともこの問題があります。
上記のコードと 'isolate-form'指示文で[this fiddle](https://jsfiddle.net/zrbjvxew/1/)をチェックしてください。私が質問の詳細を理解していない限り、あなたは期待どおり行動します! '$ touched'のドキュメントも参照してください:"コントロールがフォーカスを失った場合はTrue "これは、最初にInput01を入力して無効なものを入力したとき(つまり、ng-minlength = "2"という制約を追加したとき)、コントロールがまだフォーカスを失っていないのでエラーメッセージが表示されないことを意味します。 (Angular IMOからの不都合な実装ですが、仕様によると間違いありません)。 –
恐ろしい!フィドルに感謝します。私の問題は解決しました。あなたの答えを更新し、そこにもフィドルを提供してください。私は答えとしてマークすることができます。あなたのHTMLも更新してください。ところで、私のフィドルもここにあります。 https://jsfiddle.net/HosnaSoft/90yf5tco/1/ –