web-dev-qa-db-ja.com

requiredとng-requiredはどう違いますか?

requiredng-required(フォーム検証)の違いは何ですか?

274
TidharPeer

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

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

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

416
Tiago Roldão

私は tiago's answer のためにアドオンを作りたいです。

ng-showを使用して要素を隠し、その上にrequired属性を追加するとします。

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

のようなエラーをスローします:

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

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

77

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

Angular属性ng-required="yourCondition"は 'isRequired(yourCondition)'を意味し、HTML属性を動的に設定しますあなたの状態に応じてあなたのために。

また、HTMLバージョンはを混乱させますが、できないことはできません。 required="true"required="false"のような条件付きのものを書いてください。属性の存在だけが重要です(現在は真を意味します)。これがAngularがng-requiredを手助けする場所です。

17