Angularjs 如何将Select更改为ng invalid(角度无效)

Angularjs 如何将Select更改为ng invalid(角度无效),angularjs,validation,Angularjs,Validation,我有一个到期月份和年份,它显示在使用选择输入字段的表单中。当用户单击月份和年份时,ng change将触发一个函数checkDate()进行验证。我使用控制台返回日期是否有效。我还显示了一条错误消息,说明过期日期无效。但是,即使表单无效,我也无法为select元素提供无效状态。即使日期不正确,select元素上的类也会从ng invalid变为ng valid,这最终使我的表单有效。如果select字段无效,如何将无效类应用于select元素 HTML 实验年 年 {{year} 向下箭头 {

我有一个到期月份和年份,它显示在使用选择输入字段的表单中。当用户单击月份和年份时,ng change将触发一个函数checkDate()进行验证。我使用控制台返回日期是否有效。我还显示了一条错误消息,说明过期日期无效。但是,即使表单无效,我也无法为select元素提供无效状态。即使日期不正确,select元素上的类也会从ng invalid变为ng valid,这最终使我的表单有效。如果select字段无效,如何将无效类应用于select元素

HTML


实验年
年
{{year}
向下箭头
{{errMessage}}
JS

$scope.checkDate=函数(){
如果(!($scope.exp_月和$scope.exp_月))返回;

如果($scope.exp_month而不是通过添加
valid
/
invalid
类来验证表单输入,那么有一种更好的方法来执行自定义验证:

使用
$scope.formName.inputName.$setValidity(“原因”,false)
()

因此,当您发现您的值无效时(在您的情况下,月-年组合已过期…),您可以将有效性设置为
false
。当它再次有效时,可以将有效性设置为
true

您可以使用
$scope.formName.$valid
了解表单是否有效。基于此,您可以执行进一步的操作


制作您的示例

Tanmay谢谢!这非常有效。添加了ng invalid expired类,并且当日期不正确时表单无效。@NinaMorena很高兴我能提供帮助:)
<div>
    <label for="exp_year">Exp Year</label>
    <select id="exp_year" class="form-control" ng-model="exp_year" ng-change="checkDate()" required>
        <option value="" disabled><span class="pull-left">Year</span></option>
        <option value="{{ year }}" ng-repeat="year in years">{{ year }}</option>
    </select>
    <i class="material-icons pull-right select-icon">arrow_drop_down</i>
</div>

<small class="text-danger">{{errMessage}}</small>
$scope.checkDate = function () {
    if (!($scope.exp_month && $scope.exp_month)) return;
    if ($scope.exp_month <= currentMonth && $scope.exp_year <= currentYear){
        console.log('this form is invalid')
        $scope.errMessage = 'Please enter a valid expiration date';
        return true
    } else {
        console.log('this form is valid')
        $scope.errMessage = '';
        return false
    }
}