javascript - 实现自定义验证器来 trim Angular 2 中的输入字段?

标签 javascript angular validation

我是 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, ' '); 

应该被删除,并且您应该创建一个自定义管道,以便在到达验证器逻辑之前在模板中更改该值。

https://angular.io/guide/pipes

关于javascript - 实现自定义验证器来 trim Angular 2 中的输入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612023/

相关文章:

javascript - 具有初始值的 FormGroup 和验证器不起作用

javascript - angular 2无法引用函数内的变量

angular - NativeScript Schematics - 多次调用单例服务构造函数

JQuery 验证单独工作但不能一起工作

javascript - Grunt-eslint 并启用 `--fix` 标志以自动修复违规

javascript - 为什么我会收到这个已弃用的警告?! MongoDB

javascript - 输入文本格式,Jquery,Javascript 或 Css

javascript - 验证电子邮件唯一性时的 AngularJS/奇怪行为

javascript - 有没有办法解析时间并能够使用 javascript 和 d3 直接绘制它们?

javascript - 为什么我可以设置不可配置属性描述符的[可枚举性和]可写性?