Angular2:自定义验证仅包含数字的字段
Angular2: Custom validation for fields with numbers only
我正在尝试在 angular 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);
验证器功能也在我包含的其他文件中,但这里它在 class 中,我使用 this.function 访问,还有如何应用适当的推特 bootstrap
我试图在这个 Plunker 中重现它,并且验证正常。
我不确定你期待什么。当前 formValidator
表示输入 123
时出错,其他所有内容均被视为有效('ab'、'12'、'xyz123')。
如果要指示错误 return 一个带有错误键和任意值的对象(例如错误消息)。
如果要表明没有错误(值有效)则return null
.
formValidator(val : Control) :any {
if(val.value.match(/.*[^0-9].*/)){
return {inval : true};
}
}
已更新Plunker
您正在使用 Angular2,
那么您可以使用 html5 表单域。你为什么不使用'<input type ="number"/>
?
我正在尝试在 angular 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);
验证器功能也在我包含的其他文件中,但这里它在 class 中,我使用 this.function 访问,还有如何应用适当的推特 bootstrap
我试图在这个 Plunker 中重现它,并且验证正常。
我不确定你期待什么。当前 formValidator
表示输入 123
时出错,其他所有内容均被视为有效('ab'、'12'、'xyz123')。
如果要指示错误 return 一个带有错误键和任意值的对象(例如错误消息)。
如果要表明没有错误(值有效)则return null
.
formValidator(val : Control) :any {
if(val.value.match(/.*[^0-9].*/)){
return {inval : true};
}
}
已更新Plunker
您正在使用 Angular2,
那么您可以使用 html5 表单域。你为什么不使用'<input type ="number"/>
?