我想在删除它的掩码后验证字段的长度。我正在使用https://github.com/text-mask/text-mask,因此,我不能只使用属性“minLength”。随着面具不起作用。始终具有预期的大小,即使用户只输入一个字符。因此,需要在“ngModelChange”中调用方法,清除掩码,然后查看文本的长度。
所以问题是,如果我的方法验证失败,如何将此表单字段设置为无效?
checkDigitosCPF() {
const qtdDigitos = _.replace(this.advogado.cpf, /\D/g, '').length;
this.isCPFNotOk = _.isEqual(qtdDigitos, 11);
}
<div class="form-group">
<label class="form-control-label" for="field_cpf">CPF</label>
<input type="text" class="form-control" name="cpf" id="field_cpf" [(ngModel)]="advogado.cpf" required [textMask]="{mask: cpfMask}" (ngModelChange)="checkDigitosCPF()" minlength="11" />
<div [hidden]="!(editForm.controls.cpf?.dirty && editForm.controls.cpf?.invalid)">
<small class="form-text text-danger" [hidden]="!editForm.controls.cpf?.errors?.required" jhiTranslate="entity.validation.required">
This field is required.
</small>
<small class="form-text text-danger" [hidden]="isCPFNotOk">
Esse campo deve ter no minímo 11 carácteres.
</small>
</div>
</div>
答案 0 :(得分:0)
在组件中,验证器方法应如下所示:
// this function should be triggered each time the value change or the form submit
validateField(form): void {
if (conditionOfError) {
form.controls.yourFieldName.setErrors({'customLengthError': true})
} else {
form.controls.yourFieldName.updateValueAndValidity()
}
}
在表单html 错误列表中:
<small *ngIf="yourFieldName?.errors?.customLengthError">
The error text.
</small>
答案 1 :(得分:0)
我解决了这个问题。我通过创建自定义指令获得了所需的行为。