我有一个myNumber指令,它包含一些输入周围的嵌套ng-forms。输入的ng-required属性设置为true,并且具有某个ng-pattern。问题是输入的状态(例如,ng-valid-required,ng-invalid-pattern)传播到指令内的ng-forms。因此,它们与输入本身具有相同的状态,这是想要的行为。但是,一旦超出指令本身,指令周围的ng-form就不会得到ng-forms的状态。
<ng-form name="outerForm" id="outerForm">
<my-number ...></my-number>
</ng-form>
虽然输入和ng-forms内部指令的状态类似于ng-valid-required ng-dirty ng-invalid ng-invalid-pattern,但是outerForm是ng-pristine ng-valid。
这是正常的行为,这是AngularJS的工作方式,还是有一种解决方法可以将状态置于指令之外?
答案 0 :(得分:1)
我使用控制器功能通过以下方式解决了这个问题:
controller: function($scope) {
$scope.$watch('innerForm.$valid', function() {
if ($scope.innerForm.$valid) {
$scope.$parent.outerForm.$setValidity(null, true);
} else {
$scope.$parent.outerForm.$setValidity(null, false);
}
});
}