2017-12-15 9 views
0

저는 반응이있는 폼을 사용하고 있습니다. 시작 날짜 "시작 날짜"를 종료 날짜 "종료 날짜"와 비교해야합니다. 두 컨트롤 모두 "dateLessThan"함수에서 유효성이 검사되지만 문제는 내가 컨트롤을 요청하는 방법을 몰라 여기폼 컨트롤의 이름을 얻으십시오

//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') }),   

    }); 
} 

을 내가 비교 날짜를 컨트롤의 이름을 알 필요가 평가된다는 점이다 :

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

} 

//Some stuff 
+0

안녕하세요, 답변이 도움이 되었습니까? :) – Alex

답변

0
그냥 같이 할 필요가

, .get() met로 추출하여 양식 내의 개별 FormControl을 검사 할 수 있습니다. 벽돌 상자. 여기

contratoForm.get('fechaInicio').value 


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

검사 : 당신이에서 어떤 매개 변수를 전달할 필요가 없습니다, 사용자 정의 유효성 검사기에서

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

은 당신이 그렇게 할 수 있습니다 TS 코드 :

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

    }); 
} 

R의 사용자 정의 유효성 검사기 :

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

당신은 그렇지 않은 경우 예컨대, notValid을 유효 null을 반환하고, 오류를 설정해야합니다.