我根据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"/>
抱歉,您需要提供要翻译的内容。
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;
}
针对这个元素,我已经实现了输入掩码目录:http://pastebin.com/wRzHSsVy
以下问题会出现:当输入电话号码时,验证器会先起作用,然后是输入掩码目录。因此,验证器检查的数据和输入掩码目录格式化的数据不同。例如,验证器上的电话号码为(888)-888-88882,而掩码将该号码转换为以下格式(888)-888-8888,但验证器已经工作并指出了掩码激活前的错误。
(ngModelChange)
和(keydown.backspace)
相关联。backspace 用于处理掩码更改,以便在每次击键时 backspace 可以删除数字。这是它的链接:https://dev59.com/uFoU5IYBdhLWcg3wHEVp#37887432 - Machtyn