2017-12-15 25 views
0

Ich arbeite mit reaktiven Formen in Winkel, ich muss das Startdatum "Startdatum" mit dem Enddatum "Enddatum" vergleichen, beide Steuerelemente werden in der "dateLessThan" -Funktion validiert, aber das Problem ist, dass ich weiß nicht, wie für die Steuerung fragen prüftName der Formularsteuerung

//Some stuff 
public fechaInicio = new FormControl('', [ 
    Validators.required  
    , this.dateLessThanTo 

]); 
public fechaFin = new FormControl('', [ 
    Validators.required  
    , this.dateLessThan 
]); 



createForm() { 
    this.contratoForm = this.formBuilder.group({  
     fechas: this.formBuilder.group({ 
      fechaInicio: this.fechaInicio, 
      fechaFin: this.fechaFin 
     }, { validator: this.dateLessThan('fechaInicio', 'fechaFin') }),   

    }); 
} 

Hier muss ich den Namen der Steuerung für die Vergleichsdaten wissen:

dateLessThanTo(fieldControl: FormControl) { 
    // 
    //if (fechaInicio.value > FechaFin.value){ 
    //  return true; 
    //} 
    //else{ 
    // return false; 
    // } 

} 

//Some stuff 
+0

hey, hat dir irgendeine Antwort geholfen? :) – Alex

Antwort

2

In Ihrem benutzerdefinierten Validator erhalten Sie die formGroupfechas, so dass Sie alle Parameter nicht vom Pass müssen TS-Code:

createForm() { 
    this.contratoForm = this.formBuilder.group({  
     fechas: this.formBuilder.group({ 
      fechaInicio: this.fechaInicio, 
      fechaFin: this.fechaFin 
     }, { validator: this.dateLessThanTo }),   

    }); 
} 

und in Ihnen r benutzerdefinierten Validator:

dateLessThanTo(group: FormGroup) { 
    if (group.controls.fechaInicio.value > group.controls.fechaFin.value){ 
    return {notValid: true} 
    } 
    return null; 
} 

Sie müssen null zurückzukehren, wenn gültig, und ein Fehler gesetzt, z notValid, wenn es nicht ist.

0

Sie müssen einfach so tun, Sie können eine einzelne FormControl innerhalb eines Formulars untersuchen, indem Sie es mit dem .get() met extrahieren Hod.

contratoForm.get('fechaInicio').value 


dateLessThanTo(fieldControl: FormControl) { 
    let va= fieldControl.get('fechaInicio').value ; 
    let va1 = fieldControl.get('FechaFin').value ; 
} 

Check hier: https://angular.io/guide/reactive-forms#inspect-formcontrol-properties

0

Sie können das tun, mit:

Object.getOwnPropertyNames(this.contratoForm['controls']['fechas']['controls']).map((key: string) => { 
// Something like this. Not sure how your form looks like 
Verwandte Themen