requiredとng-requiredの違いは何ですか?


回答:


420

AngularJSフォーム要素は、required検証機能を実行するための属性を探します。ブールテストに応じng-requiredrequired属性を設定できます(たとえば、フィールドAに特定の値がある場合- 選択肢として「学生」を選択した場合、フィールドB- たとえば、学生番号のみが必要です)

例として、<input required>そして<input ng-required="true">本質的に同じものです

なぜこれがこのようになっている(make <input required="true">またはだけでなく<input required="false">)疑問に思っている場合、それはHTMLの制限によるものです- required属性には関連する値がありません-単なる存在は(HTML標準に従って)要素が必要であることを意味します-したがって、角度には必要な値を設定/設定解除する方法が必要です(required="false"無効なHTMLになります)


ng-requiredをそれぞれ削除するにはどうすればよいですか?私はいくつかのjqueryメソッドを試しましたが、成功しませんでした
themhz

28
質問が理解できたかどうかわかりません。実際には、ng-required = "true"ではなく、ng-required = "scopedVariable"またはng-required = "scopeTruthTest()"と、変数/関数は、要素が必要かどうかを決定します。Angularアプリでは、jqueryを使用してこれらのものをいじらないでください。そうしないと、予期しない結果が生じます。
TiagoRoldão2013

ng-requiredは、「これは必須フィールドです」というデフォルトのツールチップスタイルのエラーメッセージを表示することに注意してください。これは常に望ましいわけではありません。それをオフにする方法を探しています
アダムスペンス

2
そうではありません。確かではありませんが、あなたが参照しているのはhtml5検証です。これは、ほとんどの最新のブラウザーによって自動的に実行されます。これを制御したい(ブラウザーの機能を無効にしたい)場合は、属性novalidate:を追加できます<form method="post" action="/foo" novalidate>。繰り返しますが、これはhtml5属性であり、angularJSとは関係ありません。
ティアゴロルダン

ng-requiredAngularがスコープ/コントローラー変数を指す場合、Angularはそれを監視して変更を監視し、それに応じて必要な属性を設定すると予想していました。単純なHTML required属性の場合は、そのような柔軟性はありません。番号?そして、私たちは同じトピックについて話していng-attr-requiredますが、どうですか?まったく同じng-requiredですか?
AsGoodAsItGet 2017

78

私はティアゴの答えのためのアドオンを作りたいと思います

同じ要素を使用ng-showして要素を非表示にし、required属性を追加するとします。

<div ng-show="false">
    <input required name="something" ng-model="name"/>
</div>

次のようなエラーがスローされます:

name = ''の無効なフォームコントロールにはフォーカスできません

これはrequiredhidden要素に検証を課すことができないためです。を使用ng-requiredすると、必要な検証を条件付きで適用するのが簡単になります


13
間違いなく良いヒントです。またng-ifng-show/の代わりに使用して、ng-hideその潜在的な問題を回避することもできます。
jkjustjoshing 2015年

1
これは受け入れられる答えになるはずです。非表示の要素がある場合(ng-show = "false")、この回答で説明されているように、ng-required = "true"と 'required'の間には違いがあり、この違いのために熱湯に入りました。
Ivan Krivyakov 16

17

HTML属性は、 required="required"このフィールドが有効であることがフォームのために必要であることをブラウザに伝える文です。(required="required"はXHTMLフォームです。使用requiredするだけで同等です)

角度属性 ng-required="yourCondition"手段「IsRequiredこの(yourCondition)」とHTML属性を設定し、動的に、あなたの条件に応じて、ために。

また、HTMLバージョンは混乱を招きます。またはのような条件付きの何かを書くことはできません。属性の存在のみが重要です(存在はtrueを意味します)。これは、Angularがを支援する場所です。required="true"required="false"ng-required


はい、残念ながらブラウザはtrue / falseを許可していません。おそらく技術的すぎると考えられています...
Christophe Roussy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.