web-dev-qa-db-fra.com

AngularJS Dropdown nécessite une validation

Voici l'extrait de code. Je veux valider mon menu déroulant en utilisant angular.

<td align="left" width="52%"> 
  <span class="requiredSmall">*</span> 
    <select class="Sitedropdown" style="width: 220px;" 
            ng-model="selectedSpecimen().serviceID" 
            ng-options="service.ServiceID as service.ServiceName for service in services"> 
         <option value="" ng-selected="selected">Select Service</option> 
   </select> 
</td>

Valable signifie:

Les valeurs valides peuvent être n'importe quoi mais "Select Service", c'est ma valeur par défaut. Comme tout autre validateur de champ ASP.net Require, DefaultValue = "0" pour la liste déroulante, donc ici, ma liste déroulante sera liée aux services et je souhaite pour sélectionner toutes les autres valeurs sauf "Select Service".

61
Dhaval Marthak

Vous devez ajouter un attribut name à votre liste déroulante, puis vous devez ajouter un attribut required et vous pouvez ensuite référencer l'erreur à l'aide de myForm.[input name].$error.required:

HTML:

        <form name="myForm" ng-controller="Ctrl" ng-submit="save(myForm)" novalidate>
        <input type="text" name="txtServiceName" ng-model="ServiceName" required>
<span ng-show="myForm.txtServiceName.$error.required">Enter Service Name</span>
<br/>
          <select name="service_id" class="Sitedropdown" style="width: 220px;"          
                  ng-model="ServiceID" 
                  ng-options="service.ServiceID as service.ServiceName for service in services"
                  required> 
            <option value="">Select Service</option> 
          </select> 
          <span ng-show="myForm.service_id.$error.required">Select service</span>

        </form>

    Controller:

        function Ctrl($scope) {
          $scope.services = [
            {ServiceID: 1, ServiceName: 'Service1'},
            {ServiceID: 2, ServiceName: 'Service2'},
            {ServiceID: 3, ServiceName: 'Service3'}
          ];

    $scope.save = function(myForm) {
    console.log('Selected Value: '+ myForm.service_id.$modelValue);
    alert('Data Saved! without validate');
    };
        }

    Here's a working [plunker][1]. 


      [1]: http://plnkr.co/edit/xmycAAkWZI5VOogi1MyQ
117
Stewie