假设我有一个由 ngPattern 验证的当前有效的文本框。我现在将正则表达式更改为与文本框值不匹配的正则表达式。Angular 不会立即发现文本框现在无效 - 用户必须进行更改(例如,键入另一个字母)才能对新的正则表达式进行验证。
一种解决方法是在正则表达式更改时通过将 $viewValue 设置为自身来强制解析管道运行,例如:
看法
<div ng-form="form">
<input type="text" name="val" ng-model="myValue" ng-pattern="myRegex" />
</div>
控制器
// set a new regex for the ng-pattern directive and force re-validation
$scope.myRegex = new RegExp('^[a-z]$');
$scope.form.val.$setViewValue($scope.form.val.$viewValue); // yuck
但是,这似乎是一个大技巧,我希望有一种更好的方法可以做到这一点,而无需求助于自定义指令。
小提琴:http: //jsfiddle.net/5jm2V/2/