Будет генерироваться следующая разметка html:
==== Валидация ====
Перед тем как отправить форму, нам надо удостовериться, что данная форма содержит корректные значения. Для проверки используется механизм валидации. В Angular 2 мы можем использовать валидацию HTML5, которая применяется в виде атрибутов:
* **required**: требует обязательного ввода значения
* **pattern**: задает регулярное выражение, которому должны соответствовать вводимые данные
* **email**: задает проверку правильного написания email адреса
Для использования валидации определим следующий компонент:
import {Component, ViewChild} from '@angular/core';
import {NgForm} from "@angular/forms";
@Component({
selector: 'app-root',
template: `
`
})
export class AppComponent {
answers = [{
type: 'yes',
text: 'Да'
}, {
type: 'no',
text: 'Нет'
}];
defaultAnswer = 'no';
defaultCountry = 'ru';
submitForm(form:NgForm){
console.log('submit', form);
}
}
Здесь проверяется валидность поля email. Для этого мы берем переменную email, которая представляет связанный с полем ввода объект NgModel (#email="ngModel"), и смотрим на свойства valid и untouched у этого объекта. Если хотя бы одно из этих свойств равно true, email.invalid && email.touched мы видим сообщение об ошибке. \\ \\ В принципе для проверки корректности нам достаточно посмотреть на свойство valid. Однако не всегда может желательно сразу отображать ошибку при загрузке страницы. В данном же случае мы смотрим на валидность, если поле ввода уже получало фокус. \\ \\ Для стилизации сообщений об ошибках применяются классы bootstrap: \\ {{ :angular:angular2:forms:screen3.png }} \\
В то же время несмотря на наличие ошибок валидации мы можем нажать на кнопку и выполнить метод submitForm(), который обработает введенные данные. Однако поскольку данные некорректны, любая обработка будет бессмысленной. И в этом случае можно отключить кнопку. Для этого опять же можно применить проверку на валидность полей. Так, изменим код кнопки следующим образом:
С помощью выражения //[disabled]="myForm.valid"// для атрибута //disabled// устанавливается значение true, то есть кнопка отключается, если хотя бы одно из полей не валидно.