How can I conditionally require form inputs with AngularJS?

There’s no need to write a custom directive. Angular’s documentation is good but not complete. In fact, there is a directive called ngRequired, that takes an Angular expression.

<input type="email"
       name="email"
       ng-model="contact.email" 
       placeholder="[email protected]"
       ng-required='!contact.phone' />

<input type="text"
       ng-model="contact.phone"             
       placeholder="(xxx) xxx-xxxx"
       ng-required='!contact.email' />  

Here’s a more complete example: http://jsfiddle.net/uptnx/1/

Leave a Comment