0

나는 Anogular Material mdDialog를 사용하여 대화 상자 안에 작은 폼을 표시합니다. 사용자 지정 가능 지시문을 사용하여 비동기 유효성 검사를 수행합니다.비동기 유효성 검사기가 약속을 반환하지만 대신 '정의되지 않음'이 있음 - mddialog 각도 자료 내부

dialog.tmpl.html :

<md-dialog aria-label="Save Scenario"> 
<form name="userForm" novalidate > 

<input style="display:inline-block" name="Name" ng-model="SaveScenario.ScenarioName" ng-pattern="pattern" 
        required username-available ng-model-options="{ updateOn: 'blur' }"> 

</form> 
</md-dialog> 

app.js :

Dialog Box

: 여기

module.directive('usernameAvailable', function($timeout, $q,UserService) { 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, elm, attr, ngModel) { 
     ngModel.$asyncValidators.usernameExists = function(modelValue, viewValue) { 


     var currentValue = modelValue || viewValue; 

     UserService.checkifScenarioNameExists(currentValue) 
     .then(
         function (d) 
         {        
          console.log("the data object from promise is", d.data); 
          if (d.data == true) 
          { 
           console.log("username exists"); 
          //  deferred.resolve(d.data); 
            return $q.resolve(d.data); 
          } 
          else 
          { 
           console.log("username does not exist"); 
           ngModel.$setValidity('usernameExists', false); 

            return $q.reject(d.data); 
          } 


         }, 
         function (errResponse) { 
          console.error('The Promise was unsuccessfull'); 
         } 

       ); 

     }; 
    } 
    } 
}); 

내 대화 상자의 모양과 에러가 표시되는 방법이다

지시문 내에서 약속을 반환하는 구문이 정확하다고 생각합니다. 나는 그것이 md-dialog로 뭔가있을 수 있는지 확신하지 못합니다. 누군가이 오류가 발생하는 이유를 도와주십시오.

답변

1

오류 상태로는 expected asynchronous validator to return a promise입니다. 유효성 검사기 내부에서 UserService 사용법 앞에 return 문이 없습니다.

return UserService.checkifScenarioNameExists(currentValue).then(...) 
관련 문제