微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Angular2:仅对包含数字的字段进行自定义验证

我试图在角度2中进行自定义验证,我已经包含了我的知识所需但我无法验证

import { FORM_DIRECTIVES, AbstractControl, ControlGroup
,FormBuilder,Control, Validators } from 'angular2/common';
@Component({
selector : 'cusValidate',
template: `
 <form [ngFormModel] = "myform" (ngSubmit) = "onSubmit()">
 <lable>Credit Card Number</lable>
 <div>
 <input type = "text" [ngFormControl] = "inputfield"/>
 <div [class.has-error] = '!inval'>
  </div>
 </div>
 <button type = "submit">Submit</button>
 </form>
`,
directives : [FORM_DIRECTIVES]

})
export class cusValidation{
myform : ControlGroup;
inputfield : AbstractControl;

constructor(fb : FormBuilder){
   this.myform = fb.group({
        'inputfield' : ['' , Validators.compose([Validators.required
,this.formValidator])]
    })
   this.inputfield = this.myform.controls['inputfield']
}

 formValidator(val : Control) :any {
     if(val.value.match(/^123/)){
         return {inval : true};
     }
 }

onSubmit(){
    console.log('submit function called')
}
}
bootstrap(cusValidation);

还有验证器功能在我包含的其他文件中但是在这里它在课堂上并使用this.function进行访问,以及如何应用适当的twitter bootstrap

解决方法:

我试图在这Plunker中重现它,验证被称为罚款.

我不确定你的期望.目前,formValidator在输入123时表示错误,其他所有内容都被视为有效(‘ab’,’12’,’xyz123′).

如果要指示错误,则返回具有错误键和任意值的对象(例如错误消息).

如果要表示没有错误(值有效),则返回null.

formValidator(val : Control) :any {
     if(val.value.match(/.*[^0-9].*/)){
         return {inval : true};
     }
 }

已更新Plunker

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐