如果您稍微将config对象修改为这样的内容,
fieldData = {
exampleField: {
value: 'default value!',
validators: {
required: true,
minLength: 10,
pattern: /I_NEED_PATTERN_CHECK/,
minLength: null
}
}
}
然后在你的组件中有一个处理这个的方法
validators
属性。
populateValidatorsList(valObj): any[] {
const list = [];
if (valObj['pattern']) { list.push(Validators.pattern(valObj['pattern'])); }
if (valObj['maxLength']) { list.push(Validators.maxLength(valObj['maxLength'])); }
if (valObj['minLength']) { list.push(Validators.minLength(valObj['minLength'])); }
if (valObj['required']) { list.push(Validators.required); }
return list;
}
ngOnInit() {
this.detailsForm = this.formBuilder.group({
exampleField: [this.fieldData['exampleField']['value'], [...this.populateValidatorsList(this.fieldData['exampleField']['validators'])]]
});
}
您甚至可以使用这种方式添加自定义验证。只需创建另一个
.ts
validations.ts
)并包含所有自定义验证
functions
class
export
ed函数按照自定义验证函数分组在一起
rules
validators: {
required: true,
minLength: 10,
pattern: /I_NEED_PATTERN_CHECK/,
minLength: null,
custVal: 'custCheckForFoo'
}
验证器。输电系统
export function custCheckForFoo(c: AbstractControl) {
}
将此函数作为导入组件,
import * as fromValidators from '../validators'
在你的
populateValidatorsList()
作为附加检查,
if (valObj['custVal']) { list.push(fromValidators[valObj['custVal']]); }