0

Я использую угловую версию 1.5.5 и недавно обновлен до углового материала 1.1.0. После обновления я начал сталкиваться с некоторыми проблемами в ng-сообщениях. Первоначально сообщения ng не отображались. Я установил его, добавив ниже класса со ссылкой на git issueодинаковое сообщение ng, отображающее несколько раз

md-input-container .md-input-message-animation:not(.ng-animate) { 
    opacity: 1; 
    margin-top: 0px; 
} 

Теперь же нг сообщение отображает несколько раз.

<div class="inputbox-area" ng-form='subForm'> 
    <md-input-container class="md-block" ng-repeat="item in dg.inputArr"> 
     <label>Level {{$index+1}}</label> 
     <input md-maxlength="32" maxlength="32" ng-change="dg.showErrors = false" name="{{item.Level}}" required ng-model="item.Name" ng-pattern="/^[-a-zA-Z0-9,._' ]*$/" type="text"> 
     <div ng-messages="subForm[$index+1].$error" ng-if="dg.showErrors"> 
      <div ng-message="required">Level {{$index+1}} is mandatory</div> 
      <div ng-message="md-maxlength">should be less than 32 characters long.</div> 
      <div ng-message="duplicate">Level {{$index+1}} is a duplicate name</div> 
      <div ng-message="pattern" class="my-message">Level {{$index+1}} is an invalid name</div> 
     </div> 
    </md-input-container> 
</div> 

enter image description here

Любые предложения, где я неправильно?

ответ

1
<div class="inputbox-area" ng-form='subForm'> 
    <md-input-container class="md-block" ng-repeat="item in dg.inputArr"> 
     <label>Level {{$index+1}}</label> 
     <input md-maxlength="32" maxlength="32" ng-model-options="{ updateOn: 'submit' }" ng-change="dg.showErrors = false" name="{{item.Level}}" required ng-model="item.Name" ng-pattern="/^[-a-zA-Z0-9,._' ]*$/" type="text"> 
     <div ng-messages="subForm[$index+1].$error" ng-if="dg.showErrors"> 
      <div ng-message="required">Level {{$index+1}} is mandatory</div> 
      <div ng-message="md-maxlength">should be less than 32 characters long.</div> 
      <div ng-message="duplicate">Level {{$index+1}} is a duplicate name</div> 
      <div ng-message="pattern" class="my-message">Level {{$index+1}} is an invalid name</div> 
     </div> 
    </md-input-container> 
</div>  

Проблема заключается ваша модель получения обновляется каждый раз, когда срабатывает событие так добавить ng-model-options="{ updateOn: 'submit' }" в вашем поле ввода это будет срабатывать только тогда, когда вы отправляете эту форму

0

Im не 100% уверен, но я думаю, нг-сообщения должны ссылаться на имя поля ввода, как это:

ng-messages="subForm.{{item.Level}}.$error" 

Я не знаю, если это синтаксис сработает, но попробовать и Посмотрите, если это произойдет.

+0

Это вмятина работало. – ShaMoh