2016-04-06 4 views
0

Я использую FormBuilder и имеет простую проверку, которая проверка, если поле действует с *ngIf="!field.validAngular2 стрельбу проверки по умолчанию

<input [ngFormControl]="myForm.controls['field']" 
     type="text" id="field" #field="ngForm"> 
<span class="error" *ngIf="!field.valid">Error</span> 

Всегда, когда компоненты загружены errors показаны, прежде чем я даже ничего в любых входах типа. Как остановить Угловое 2 проверки работоспособности на нагрузке компонента, чтобы он срабатывал только при наборе текста?

ответ

1

Включить проверку, если поле touched или dirty

<span class="error" *ngIf="!field.valid && field.dirty">Error</span> 
1

В основном есть три типа класса ошибок для входов формы,

  • загрязнены - когда значение элемента управления изменилось

  • коснулся - когда управление было посещено

  • действительно - когда контрольное значение является действительным (согласно проверке предоставленной)

так в соответствии с вашими требованиями вы должны использовать dirty or touched класс из числа классов, вы можете использовать [hidden] as well as *ngIf использовать этот класс ошибок (к показать сообщение об ошибке). можно использовать так:

<span [hidden]="name.valid" *ngIf='name.touched'><b>Required</b></span> 

см working example для формы, используя классы ошибок.

для получения дополнительной информации, связанный с классами ошибок смотрите здесь

+0

Когда вы идете отправить форму вы хотите любые поля, которые являются недопустимыми, но нетронутым в настоящий покажите свои сообщения об ошибках. Как бы Вы это сделали? –

+0

this.myForm.markAsTouched(); if (this.myForm.valid) {// ваш код} else {// отображение пользовательских ошибок} –

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