# Variable requiredDirective`Const`

requiredDirective: (string | (($parse: ParseService) => Directive))[] = ...

#### Type declaration

- string
- ($parse: ParseService) => Directive
  - - ($parse: ParseService): Directive

    - #### Parameters

      - $parse: ParseService

      #### Returns Directive

#### Param: ngRequired

AngularTS expression. If it evaluates to `true`, it sets the `required` attribute to the element and adds the `required` ngModel.NgModelController#$validators `validator`.

ngRequired adds the required ngModel.NgModelController#$validators `validator` to ngModel `ngModel`. It is most often used for input `input` and select `select` controls, but can also be applied to custom controls.

The directive sets the `required` attribute on the element if the AngularTS expression inside `ngRequired` evaluates to true. A special directive for setting `required` is necessary because we cannot use interpolation inside `required`. See the guide/interpolation interpolation guide for more info.

The validator will set the `required` error key to true if the `required` attribute is set and calling ngModel.NgModelController#$isEmpty `NgModelController.$isEmpty` with the ngModel.NgModelController#$viewValue `ngModel.$viewValue` returns `true`. For example, the `$isEmpty()` implementation for `input[text]` checks the length of the `$viewValue`. When developing custom controls, `$isEmpty()` can be overwritten to account for a $viewValue that is not string-based.

- Defined in src/directive/validators/validators.js:36