Iry*_*nko 6 validation directive angular
我已经按照https://auth0.com/blog/angular-2-series-part-5-forms-and-custom-validation/实现了表单验证
<input class="form-control"
type="text"
name="phone"
autocomplete="off"
placeholder="(XXX)-XXX-XXXX"
mask=""
[disabled]="disabled"
[(ngModel)]="candidate.phone"
ngControl="phone"/>
Run Code Online (Sandbox Code Playgroud)
...
...
static phone(control: Control): ValidationResult {
let URL_REGEXP = /^\(\d{3}\)-\d{3}-\d{4}$/i;
if (control.value && (control.value.length <= 5 || !URL_REGEXP.test(control.value))) {
return {"phone": true};
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
加上这个元素我已经实现了输入掩码目录:http://pastebin.com/wRzHSsVy
出现以下问题:输入电话号码时,验证首先执行,然后输入掩码目录.因此验证器检查的数据和输入掩码目录格式化的数据不同.例如,验证器上的电话号码是(888)-888-88882,掩码将数字转换为以下格式(888)-888-8888,但验证器已经工作并在掩码激活之前指出了错误.
我有一个非常类似的问题,也有电话掩码/验证器。我最初的想法是在掩码中调用“this.control.valueAccessor.writeValue(...)”后以某种方式重新调用验证。
我的尝试是添加:
this.control.control.updateValueAndValidity(
{
onlySelf: true,
emitEvent: false
});
Run Code Online (Sandbox Code Playgroud)
这似乎再次触发表单验证,但提交给验证器的值仍然是不正确的(预先屏蔽的)值。
但是,我在输入中没有使用 [(ngModel)],因此您可能是使用本文建议的内容的候选人
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |