kitak.blogスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。読者です読者をやめる読者になる読者になるkitak.blogKみたいなエンジニアになりたいブログ2014-11-28AngularJSでフォームを入れ子にしたときに内側のフォームを非表示にしてバリデーションをスキップする術angularjsこんにちは。ワインをたくさん飲みました。AngularJSでフォームを入れ子にしたときの内側のフォームのバリデーションをスキップする術を知ったのでメモします。※2に書かれているように外側のフォームがvalidということは内側のフォームが全てvalidということです。入力項目が多いフォームでは、入力項目のまとまりごとにバリデーションをおこなうためにフォームを分割してネストさせますが、入力された内容によっては内側のフォームを非表示にして、そのフォームのバリデーションをスキップさせたいときがあります。そのような場合は以下のようにng-ifディレクティブで表示・非表示を切り替えることで実現できます。ng-disabled=&quot;alphaForm.$invalid&quot;&gt;Submit&lt;/input&gt;&lt;/form&gt;入れ子になっているbetaFormをng-ifディレクティブで制御しています。somethingConditionはスコープに生えた真偽値を返す適当なメソッドです。このとき、somethingConditionが偽を返せば、betaFormは非表示になり、名前だけ入力すれば、alphaFormのバリデーションが通り、submitボタンを押すことができます。逆にsomethingConditionが真を返せば、betaFormが表示され、年齢も入力しなければ、alphaFormのバリデーションは通らないので、submitボタンが無効になり、押せません。単純に表示・非表示でバリデーションをスキップするかどうか切り替えれるわけではなく、ng-ifディレクティブの代わりにng-showディレクティブを使うと、somethingConditionが偽のときに、名前を入力してもバリデーションは通りません。NgModelControllerコードを読んで調べてみようと思います。Web標準普及プロジェクトまたform要素の閉じタグは必須ですし、form要素の入れ子(ネスト)は禁止されています。Blog|ブログを報告する。