我是Angular的新手,我想检查我正在进行表单验证。当用户在输入字段中输入超过100个字符时,我想显示相应的消息。 为此我使用$ viewValue。 $ modelValue会更好地用于验证,因为它是在控制器中“保存”的吗?有没有更好的方法来进行这种特定的验证?
<div class="form-group">
<label for="Forename" class="control-label col-md-2">Forename</label>
<div class="col-md-10">
<input id="forename" type="text" class="form-control"
name="detailsForename"
required
ng-maxlength="100"
ng-model="vm.customer.Forename" />
</div>
</div>
<li ng-show="detailsForm.detailsForename.$error.required">
Forename must be filled in
</li>
<li ng-show="!detailsForm.detailsForename.$valid">
Forename was not valid
</li>
<li ng-show="detailsForm.detailsForename.$viewValue.length > 100">
Forename must be no more than 100 characters
</li>
更新:我曾尝试过vm.person.Forename,但无论出于何种原因,它都无法正常工作。如果它应该工作,我将重新审视这种可能性。 使用$ valid是不够的,因为如果输入字段为空,我将收到Required的错误消息,并且对于&gt; 100(因为$ valid = false)
答案 0 :(得分:2)
如ngMaxlength docs中所述:&#34;如果ngModel。$ viewValue长于整数,验证器会设置maxlength错误密钥...&#34;
所以在你的情况下:detailsForm.detailsForename.$error.maxlength
您永远不需要从模板访问ngModel's
$viewValue
或$modelValue
。