web-dev-qa-db-ja.com

AngularJS Dropdownには検証が必要です

以下は私のコードスニペットです。角度を使用してドロップダウンを検証したい。

<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>

有効な手段:

有効な値は「サービスの選択」以外でも構いません。それは私のデフォルト値です。他のASP.netのように、ドロップダウンにフィールドバリデーターDefaultValue = "0"が必要なので、ここでドロップダウンをサービスからバインドします。 「サービスの選択」以外のすべての値を選択します。

61
Dhaval Marthak

ドロップダウンリストにname属性を追加する必要があります。次に、required属性を追加する必要があり、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