2017-04-18 4 views
0

유효성 검사기가 호출되고 예상대로 true/false를 반환합니다. 그러나 유효성 검사기가 false를 반환하는 경우에도 ng-messages가 제대로 작동하려면 html이 "ng-invalid"대신 "ng-valid"클래스를 예상대로 표시합니다. 표준 "필수"오류를 사용할 때 문제는 없지만 사용자 정의가 작동하지 않습니다.

디버깅시 $ 오류가 필수로 업데이트되지만 daysofmonth로 업데이트되지 않는 것으로 나타났습니다.

나는 다음과 같이 보이는, 사용자 정의 유효성 검사기, daysofmonth가있는 구성 요소를 만들었습니다

<form name="form"> 
    <div> 
     <input name="daysofmonth" ng-model="ctrl.daysOfMonth"> 
    </div> 

    <ng-messages for="form.daysofmonth.$error"> 
     <ng-message when="daysofmonth">Please enter valid days.</ng-message> 
    </ng-messages> 
</form> 

어떤 도움을 주시면 감사하겠습니다 :

this.ngModel.$validators.daysofmonth = function(modelValue) { 
     modelValue = modelValue || ''; 
     let pieces = modelValue.split(','); 
     let isValid = true; 

     pieces.forEach(function(piece) { 
      let numberValue = parseInt(piece, 10); 

      if (isNaN(numberValue)) { 
       if (piece.trim() && piece.trim() !== 'L') { 
        isValid = false; 
       } 
      } else if (numberValue < 1 || numberValue > 31) { 
       isValid = false; 
      } 
     }); 

     return isValid; 
    }; 

HTML처럼 보인다!

답변

0

isValid 당신이 원하는 경우 isValid 변수가 당신이 그것을 반환 순간에 최신 수 있도록

foreach 문 방법, 비동기 하나입니다 ... 항상 true입니다, 당신은 콜백에서 그렇게해야 . 그러나 함수 대신 콜백에서 결과를 반환하므로 forEach 루프를 표준 for for 루프로 바꿀 수 있습니다.