2016-03-15 2 views
2

У меня есть несколько выпадающих меню md-select на моей форме, многие из которых имеют проверку. Проверка правильности работы на всех выпадающие для следующего, что не мешает форму от представления, если пусто, за исключением:Угловой материал вопрос проверки валидации md-select

<md-input-container class="form-input-container" 
         flex="15"> 
     <label>NDRA*</label> 
     <md-select id="registration-information-ndra" 
       name="ndra" 
       ng-model="vm.registration.code" 
       ng-class="{'validation-error': newForm.ndra.$error.required && newForm.$submitted}" 
       ng-required="vm.validation.ndra"> 
     <md-option ng-repeat="code in vm.dropdowns.codes" 
        value="{{code}}"> 
      {{code}} 
     </md-option> 
     </md-select> 
    </md-input-container> 

vm.validation.ndra истинно, так что я знаю, что это не проблема. Если посмотреть на значения для newForm.ndra против рабочего выбора опции, такие как newForm.submissionDate, я получаю следующее:

newForm.ndra: {"$viewValue":"p","$modelValue":"p","$validators":{},"$asyncValidators":{},"$parsers":[],"$formatters":[],"$viewChangeListeners":[],"$untouched":true,"$touched":false,"$pristine":true,"$dirty":false,"$valid":true,"$invalid":false,"$error":{},"$name":"ndra","$options":null}

Тип регистрации (проверки работы):

<md-input-container class="form-input-container padded-input md-block" 
          flex-gt-sm=""> 
      <label>Type of Registration*</label> 
      <md-select id="registration-information-type" 
        name="registrationType" 
        ng-model="vm.registration.type" 
        ng-class="{'validation-error': newForm.registrationType.$error.required && newForm.$submitted}" 
        ng-required="vm.validation.registrationType"> 
      <md-option ng-repeat="type in vm.dropdowns.types" 
         value="{{type}}"> 
       {{type}} 
      </md-option> 
      </md-select> 
     </md-input-container> 

{"$validators":{},"$asyncValidators":{},"$parsers":[],"$formatters":[],"$viewChangeListeners":[],"$untouched":true,"$touched":false,"$pristine":true,"$dirty":false,"$valid":false,"$invalid":true,"$error":{"required":true},"$name":"registrationType","$options":null}

+0

не могли бы вы предоставить более подробную информацию по этой проблеме? у вас есть выбор по умолчанию или даже пустой выбор? – Malachi

+0

Вы также можете показать разметку для другой опции, которую вы указали? – Malachi

+1

только что добавил разметку –

ответ

2

Обдумал это. Глубоко в моем коде контроллера был создан экземпляр контроллера, а затем this.registration.code устанавливался на P, поэтому модель для выпадающего меню ndra уже имела значение.

1

Я думаю, что ваш vm.validation.ndra возвращается напротив того, что возвращается vm.validation.registrationType. так что выбор не требуется.

, если вы посмотрите на то, что было возвращено ...

НРОМ

"$valid":true,"$invalid":false 

против

Тип регистрации

"$valid":false,"$invalid":true 

они полностью противоположны.

вы должны проверить, чтобы убедиться, что вы получаете право truthy в vm.validation.ndra

+0

Это не сработало.Я добавил дополнительную информацию о значениях входных данных формы в моем исходном сообщении. –

+1

изменил мой ответ – Malachi

+0

Я проверил оба 'vm.validation.ndra' и' vm.validation.registrationType' - они оба возвращают true. –

0

Просто измените значение false в ng-required и увидеть результат ниже в следующей ссылке. Я думаю, vm.validation.ndra возвращает false. http://codepen.io/next1/pen/WwoyWG

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