#angular #angular2-forms #angular2-changedetection
#angular #angular2-формы #angular2-обнаружение изменений
Вопрос:
Шаги:
- Перейти к Plunker
- Перейдите в
Name
поле ввода - Оставить
Name
пустым - Перейдите к
Email
amp; Введите - При вводе появляется ошибка требуемого поля для
Name
- Я хочу, чтобы эта ошибка появлялась при переходе от
Name
кEmail
, а не после вводаEmail
Как я могу это сделать?
Комментарии:
1.
this.myForm.statusChanges.subscribe
?2. Нет. Все то же поведение: (
3. Для меня неясно, о чем идет речь. Как вы думаете, почему
valueChanges
это связано с ошибками проверки?4. Я следую приведенному здесь примеру . У
ngOnInit()
меня естьbuildform()
метод, и я подписываюсь на изменения формы черезvalueChanges
илиstatusChanges
. Теперь моя логика проверки и логика для сообщений об ошибках находятся внутри этогоonValueChanged
метода. Проверка работает нормально, но она запускается не так, как ожидалось
Ответ №1:
Проблема в том, что когда я перехожу от первого элемента управления вводом ко второму элементу управления, ничего не вводя, в идеале он должен выдавать «требуемую» ошибку.
Почему вы не используете встроенные средства проверки для required? http://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html#built-in-validators
<form novalidate>
<input type="text" name="name" ngModel required>
<input type="text" name="street" ngModel minlength="3">
<input type="text" name="city" ngModel maxlength="10">
<input type="text" name="zip" ngModel pattern="[A-Za-z]{5}">
</form>
Используйте механизм проверки из Angular.
Комментарии:
1. Я использую механизм проверки из Angular
2.
this.myForm = this.fb.group({ name: ['', Validators.compose([Validators.required, Validators.pattern('^[A-Za-z .\-] $')])], contact: this.fb.group({ mob: ['', Validators.compose([Validators.required, Validators.minLength(10), Validators.pattern('^[0-9]{10}$')])], email: ['', Validators.compose([Validators.required, EmailValidator.isValidMailFormat])] }) });
3. Разница в вашей форме и моей заключается в том, что я использую формы, управляемые моделью
4. Это не имеет значения. Если у вас есть необходимый валидатор, он выдаст вам ошибки при управлении. «Вы сказали, что теперь моя логика проверки и логика для сообщений об ошибках находятся внутри этого метода OnValueChanged», так что, может быть, вы просто очистите свои ошибки где-нибудь в этой логике. Можете ли вы предоставить plunker с вашим примером?