Angular中没有空格验证器

时间:2018-03-26 17:39:37

标签: regex angular angular2-forms angular4-forms angular-validation

我在项目中使用多个输入字段处理了10多个表单。问题是我的字段将空格作为值。至于现在,我所做的是在变化时获取字段的值并修剪它并用0检查长度。如果是,请不要使用空格' ,否则取值。

<input (change)='check($event)'>

check(data){
   if(data.trim() === 0 ){
       console.log('contains empty spaces'   
   }else{
        console.log('contains data') 
   }
}

但随着场地或形式的增加,这将是一个令人头疼的问题。所以我试图将其作为通用模块。所以我会像服务一样使用它。

注意:验证应该以借口(即)&#39;的HelloWorld&#39;应该抛出错误,但是“Hello World&#39;不应该。 任何人都可以给我一些想法或建议来解决这个问题..

提前致谢

2 个答案:

答案 0 :(得分:4)

trim.validator.ts

export const trimValidator: ValidatorFn = (control: FormControl) => {
  if (control.value.startsWith(' ')) {
    return {
      'trimError': { value: 'control has leading whitespace' }
    };
  }
  if (control.value.endsWith(' ')) {
    return {
      'trimError': { value: 'control has trailing whitespace' }
    };
  }
  return null;
};

在任何想要使用trim.validator.ts

的组件中
import { trimValidator } from 'path/to/trim.validator'.ts

ctrl: FormControl;

ngOnInit() {
  this.ctrl = new FormControl('', trimValidator);
)

如果您使用的是模板驱动表单,则需要创建验证指令。只需按照official documentation

中的步骤操作即可

Live demo

答案 1 :(得分:0)

你可以尝试使用像这样的包含

-e

如果字符串包含空格,则返回true。