为什么angular会在禁用输入字段时评估模式。 它的行为应该与隐藏输入字段时的行为相同吗?
检查这个小提琴, Fiddle for reference
<div ng-app>
<div ng-controller="PatternTestCtrl">
<form name="ngform">
<label for="phone">Change the text to match the placeholder:</label><br/>
<div>
<input type="checkbox" ng-model="checkValue" />
</div>
used ng-pattern <input type="text" name="phone" ng-model="phone" ng-pattern="/^\d*$/" ng-disabled="!checkValue" maxlength="12" placeholder="555-555-5555"/>
<div>Pattern validity : {{ngform.phone.$valid}}</div>
<br>
<div>
used ng-if : <input type="text" name="dummyNum" ng-pattern="/^\d*$/" ng-model="dummyNum" ng-if="checkValue" />
</div>
<div> ng-if input box validity : {{ngform.dummyNum.$valid}}</div>
</form>
</div>
</div>
附图供参考
答案 0 :(得分:2)
ng-if
从dom中删除元素,因此ng-pattern
不会被评估。
ng-show/ng-hide
,只是让元素不可见,因此ng-pattern
仍会被评估。
ng-disable
和ng-pattern
是不同的指令,为什么要混合它们的功能。
我们在应用程序中实际上甚至在禁用的字段上进行了评估。所以我真的不明白两者应该混为一谈的原因。