Angular 8自定义验证器从不返回错误
我创建了一个带有自定义验证器的表单组,用于比较DTFIND和dtFin(dtFin必须高于DTFIND):Angular 8自定义验证器从不返回错误,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我创建了一个带有自定义验证器的表单组,用于比较DTFIND和dtFin(dtFin必须高于DTFIND): ngOnInit(){ this.pensionForm=this.fb.group({ DTF:['',验证器。必需], dtFin:[''[this.dateValidator]], montant:['',验证器。必需], nivInv:['',验证器。必需], }); 得到f(){ 返回this.pensionForm.controls; } onSubmit2(){ this.s
ngOnInit(){
this.pensionForm=this.fb.group({
DTF:['',验证器。必需],
dtFin:[''[this.dateValidator]],
montant:['',验证器。必需],
nivInv:['',验证器。必需],
});
得到f(){
返回this.pensionForm.controls;
}
onSubmit2(){
this.submitted=true;
console.log(this.f.dtFin);
如果(此.pensionForm.invalid){
回来
}
}
dateValidator():验证器fn{
返回(控件:AbstractControl):ValidationErrors | null=>{
if(control.value
但是dtFin表单控件从不返回错误,表单控件始终是“有效的”。而且,属性f未知……我如何捕获错误?尝试下面的方法
export function dateValidator(dtFin: FormControl,dtDebut : FormControl ) {
return (control: AbstractControl): ValidationErrors | null => {
if (dtFin.value < dtDebut.value) {
return { dateValidator: true };
}else{
return null;
}
}
}
ngOnInit(){
this.pensionForm = this.fb.group({
dtDebut: ['', Validators.required],
dtFin: ['', Validators.compose([Validators.required, dateValidator])],
montant: ['', Validators.required],
nivInv: ['', Validators.required],
});
}
导出函数dateValidator(dtFin:FormControl,dtFin:FormControl){
返回(控件:AbstractControl):ValidationErrors | null=>{
if(dtFin.valuedateValidator(group: FormGroup) {
if(group.get('dtFin').value < group.get('dtDebut').value) {
return { dateValidator: true };
} else {
return null;
}
}
ngOnInit(){
this.pensionForm = this.fb.group({
dtDebut: ['', Validators.required],
dtFin: ['', Validators.required],
montant: ['', Validators.required],
nivInv: ['', Validators.required],
}, {validators: [dateValidator]});
}
dateValidator(组:FormGroup){
if(group.get('dtFin').value
我建议您尝试在浏览器中使用javascript控制台并在那里进行调试,看看过滤器中到底发生了什么,或者使用stack blitz提供一个最小的工作示例,我们可以使用它更好地理解问题。您的代码相对不完整,说明对理解没有太大帮助丁正是问题所在。Grpup基本验证器是最好的案例,她说你是对的,
dateValidator(group: FormGroup) {
if(group.get('dtFin').value < group.get('dtDebut').value) {
return { dateValidator: true };
} else {
return null;
}
}
ngOnInit(){
this.pensionForm = this.fb.group({
dtDebut: ['', Validators.required],
dtFin: ['', Validators.required],
montant: ['', Validators.required],
nivInv: ['', Validators.required],
}, {validators: [dateValidator]});
}