我是角色的新手,我想知道是否可以通过向他们传递参数来使验证更加灵活。例如。一个十进制验证,你可以有2(3或4在其他情况下)小数位。
我有这本ng-book 2,有这个例子:
function skuValidator(control: Control): { [s: string]: boolean } {
if (!control.value.match(/^123/)) {
return {invalidSku: true};
}
}
-
this.myForm = fb.group({
'sku': ['', Validators.compose([
Validators.required, skuValidator])]
});
正如您所看到的,我得到的唯一参数是控制参数。如果我可以在同一验证器中切换验证,那将是很好的。对于一个控件,只允许使用整数,而对于其他控件,也允许使用小数位。这可能吗?
答案 0 :(得分:3)
返回验证程序功能的函数
只需创建一个接受参数并返回验证器函数的函数
function skuValidator(param) {
function validate(control: Control): { [s: string]: boolean } {
// use `param` value in validator
if (!control.value.match(/^123/)) {
return {invalidSku: true};
}
}
return validate;
}
获取验证器,如:
this.myForm = fb.group({
'sku': ['', Validators.compose([
Validators.required, skuValidator(someValueFromComponent)])]
});
返回验证程序函数的类
或者你也可以创建类
class SkuValidator {
constructor(private:param) {}
validate(control: Control): { [s: string]: boolean } {
// use `param` value in validator
if (!control.value.match(/^123/)) {
return {invalidSku: true};
}
}
}
获取验证器,如:
this.myForm = fb.group({
'sku': ['', Validators.compose([
Validators.required, new SkuValidator(someValueFromComponent).validate])]
});