我是 Angular 新手,我想实现一个自定义验证器,它可以 trim 模型驱动方法表单的输入字段。我在实现中遇到一些问题。当我使用 setValue() 设置值时验证器函数中会发生无限调用堆栈。所以请建议我如何更新表单值以及我想以我正在使用的方式使用验证器的另一件事。
Validator Function
static trimSpace(c:AbstractControl) {
console.log(c);
let v= c.value.replace(/\s\s+/g, ' ');
let valid=true;
console.log(v.trim());
c.setValue(v);
return true ? null : {
trimmed: true
}
}
Component Form
this.addressForm=this.fb.group({
firstName:['',Validators.compose([Validators.required,TrimValidator.trimSpace])]});
最佳答案
您不应该在验证阶段更改值,否则您可能会获得无限的验证周期。
这一行
let v= c.value.replace(/\s\s+/g, ' ');
应该被删除,并且您应该创建一个自定义管道,以便在到达验证器逻辑之前在模板中更改该值。
关于javascript - 实现自定义验证器来 trim Angular 2 中的输入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612023/