回答:
AngularJSフォーム要素は、required
検証機能を実行するための属性を探します。ブールテストに応じng-required
てrequired
属性を設定できます(たとえば、フィールドAに特定の値がある場合- 選択肢として「学生」を選択した場合、フィールドB- たとえば、学生番号のみが必要です)
例として、<input required>
そして<input ng-required="true">
本質的に同じものです
なぜこれがこのようになっているか(make <input required="true">
またはだけでなく<input required="false">
)疑問に思っている場合、それはHTMLの制限によるものです- required
属性には関連する値がありません-単なる存在は(HTML標準に従って)要素が必要であることを意味します-したがって、角度には必要な値を設定/設定解除する方法が必要です(required="false"
無効なHTMLになります)
<form method="post" action="/foo" novalidate>
。繰り返しますが、これはhtml5属性であり、angularJSとは関係ありません。
ng-required
Angularがスコープ/コントローラー変数を指す場合、Angularはそれを監視して変更を監視し、それに応じて必要な属性を設定すると予想していました。単純なHTML required
属性の場合は、そのような柔軟性はありません。番号?そして、私たちは同じトピックについて話していng-attr-required
ますが、どうですか?まったく同じng-required
ですか?
同じ要素を使用ng-show
して要素を非表示にし、required
属性を追加するとします。
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
次のようなエラーがスローされます:
name = ''の無効なフォームコントロールにはフォーカスできません
これはrequired
、hidden
要素に検証を課すことができないためです。を使用ng-required
すると、必要な検証を条件付きで適用するのが簡単になります。
ng-if
、ng-show
/の代わりに使用して、ng-hide
その潜在的な問題を回避することもできます。
HTML属性は、 required="required"
このフィールドが有効であることがフォームのために必要であることをブラウザに伝える文です。(required="required"
はXHTMLフォームです。使用required
するだけで同等です)
角度属性 ng-required="yourCondition"
手段「IsRequiredこの(yourCondition)」とHTML属性を設定し、動的に、あなたの条件に応じて、ために。
また、HTMLバージョンは混乱を招きます。またはのような条件付きの何かを書くことはできません。属性の存在のみが重要です(存在はtrueを意味します)。これは、Angularがを支援する場所です。required="true"
required="false"
ng-required