2014-10-19 2 views
0

Я новичок в Angular и не могу отладить мое использование валидации формы. А именно, я хочу отключить кнопку sumbit, если форма недействительна. Моя проблема в том, что он остается недействительным, даже если я вставил явно допустимый ввод. Это идет так далеко, что даже недопустима для пустой формы:Проблема с угловой проверкой

Это мой шаблон (исходный код закомментирована):

<div> 
    <div class="row"> 
     <div class="col-xs-6"> 
      <a href ng-click="companiesCtrl.newEdit()" class="btn btn-primary">Uus asutus</a> 
      <table class="table"> 
       <tbody> 
       <tr ng-repeat="company in companiesCtrl.list"> 
        <td><a href ng-click="companiesCtrl.load(company)">{{company.name}}</a></td> 
       </tr> 
       </tbody> 
      </table> 
     </div> 
     <div class="col-xs-6"> 
      <form id="editForm"> 
      <!--<form ng-show="companiesCtrl.showEdit()" ng-submit="companiesCtrl.save()" name="editForm">--> 
       <!--<h4>Asutuse detailid</h4>--> 
       <!--<a ng-show="companiesCtrl.edit.id != 0" class="btn btn-primary" ng-href="../{{companiesCtrl.edit.id}}/product/list">Asutuse vaatele</a>--> 
       <!--<fieldset class="form-group">--> 
        <!--<input ng-model="companiesCtrl.edit.id"/>--> 
       <!--</fieldset>--> 
       <!--<fieldset class="form-group">--> 
        <!--<input placeholder="Asutuse nimi" title="Asutuse nimi" ng-model="companiesCtrl.edit.name" ng-required="true"/>--> 
       <!--</fieldset>--> 
       <!--<fieldset class="form-group">--> 
        <!--<input type="submit" class="btn btn-success" ng-disabled="editForm.$invalid" value="Salvesta" />--> 
       <!--</fieldset>--> 
      </form> 
      <span>{{editForm.$error}}</span> 
      <span>{{editForm.$invalid}}</span> 
      <span>{{editForm.$valid}}</span> 
     </div> 
    </div> 

и это результат от «пролетных» -s:

{"required":[{}]} true false 

Мой вопрос в том, что я новичок в Angular, как отлаживать это или какие дополнительные факторы могут влиять на статус «действительный».

ответ

0

Мне удалось найти проблему самостоятельно. У меня было несколько директив, которые были скрыты ng-show. У всех из них была форма с именем «editForm», эта причина Угловая, чтобы проверить все формы.

Только если когда-либо нуждается кто-то это для отладки: Я добавил следующее в шаблон:

<span ng-repeat="error in compForm.$error"><span ng-repeat="error2 in error"> 
       {{companiesCtrl.logThis(error2)}}</span></span> 

и следующее мой контроллер:

this.logThis = function(toLog) { 
       console.log(toLog); 
      } 

Из журнала я увидел, что это была проверка слишком много раз и опечалил мою проблему.

Смежные вопросы