Создание и проверка реактивной формы для приложения Angular

Создание и проверка реактивной формы для приложения Angular

23 марта 2022 г.

Введение


Angular – это платформа разработки для создания веб-приложений, мобильных и настольных приложений с использованием HTML, CSS и TypeScript (JavaScript). В настоящее время Angular находится в версии 13, и Google является основным сопровождающим проекта.


Проверка формы обеспечивает качество, точность и целостность вводимых пользователем данных.


Проверить форму в Angular можно двумя способами: один с реактивными формами (используя функции в классе компонентов), а другой с * формы, управляемые шаблоном (с использованием атрибутов в HTML), и мы будем использовать реактивные формы* способ.


Предпосылки


Перед началом работы необходимо установить и настроить инструменты:






Начиная


Создайте приложение Angular


1. Давайте создадим приложение с базовой структурой Angular, используя @angular/cli с файлом маршрута и форматом стиля SCSS.


``PowerShell


ng new angular-reactive-form-validation --routing true --style scss


CREATE angular-reactive-form-validation/README.md (1083 байта)


CREATE angular-reactive-form-validation/.editorconfig (274 байта)


CREATE angular-reactive-form-validation/.gitignore (548 байт)


CREATE angular-reactive-form-validation/angular.json (3363 байта)


CREATE angular-reactive-form-validation/package.json (1095 байт)


CREATE angular-reactive-form-validation/tsconfig.json (863 байта)


CREATE angular-reactive-form-validation/.browserslistrc (600 байт)


CREATE angular-reactive-form-validation/karma.conf.js (1449 байт)


CREATE angular-reactive-form-validation/tsconfig.app.json (287 байт)


CREATE angular-reactive-form-validation/tsconfig.spec.json (333 байта)


CREATE angular-reactive-form-validation/.vscode/extensions.json (130 байт)


CREATE angular-reactive-form-validation/.vscode/launch.json (474 ​​байта)


CREATE angular-reactive-form-validation/.vscode/tasks.json (938 байт)


CREATE angular-reactive-form-validation/src/favicon.ico (948 байт)


CREATE angular-reactive-form-validation/src/index.html (315 байт)


CREATE angular-reactive-form-validation/src/main.ts (372 байта)


CREATE angular-reactive-form-validation/src/polyfills.ts (2338 байт)


CREATE angular-reactive-form-validation/src/styles.scss (80 байт)


CREATE angular-reactive-form-validation/src/test.ts (745 байт)


CREATE angular-reactive-form-validation/src/assets/.gitkeep (0 байт)


CREATE angular-reactive-form-validation/src/environments/environment.prod.ts (51 байт)


CREATE angular-reactive-form-validation/src/environments/environment.ts (658 байт)


CREATE angular-reactive-form-validation/src/app/app-routing.module.ts (245 байт)


CREATE angular-reactive-form-validation/src/app/app.module.ts (393 байта)


CREATE angular-reactive-form-validation/src/app/app.component.scss (0 байт)


CREATE angular-reactive-form-validation/src/app/app.component.html (23364 байта)


CREATE angular-reactive-form-validation/src/app/app.component.spec.ts (1151 байт)


CREATE angular-reactive-form-validation/src/app/app.component.ts (237 байт)


✔ Пакеты успешно установлены.


Успешно инициализирован git.


2. Установите и настройте фреймворк Bootstrap CSS. Выполните шаги 2 и 3 сообщения Добавление CSS-фреймворка Bootstrap в приложение Angular.


3. Давайте создадим собственный валидатор для поля электронной почты. Создайте директиву EmailValidatorDirective.


``PowerShell


ng сгенерировать директиву email-validator --skip-tests=true


СОЗДАТЬ src/app/email-validator.directive.ts (157 байт)


ОБНОВЛЕНИЕ src/app/app.module.ts (592 байта)


4. Измените файл src/app/email-validator.directive.ts. Создайте функцию emailValidator и класс EmailValidatorDirective, как показано ниже.


```машинопись


импортировать {директиву} из '@angular/core';


импортировать {NG_VALIDATORS, AbstractControl, Validator, ValidationErrors, ValidatorFn} из '@angular/forms';


функция экспорта emailValidator(): ValidatorFn {


const EMAIL_REGEXP = /^(([^<>()[].,;:\s@\"]+(.[^<>()[].,;:\s@ \"]+)*)|(\".+\"))@(([^<>()[].,;:\s@\"]+.)+[^<>( )[].,;:\s@\"]{2,})$/i;


возврат (управление: AbstractControl): ValidationErrors | ноль => {


const isValid = EMAIL_REGEXP.test(control.value);


если (действительно) {


вернуть ноль;


} еще {


вернуть {


EmailValidator: {


действительный: ложный,


@Директива({


селектор: '[appEmailValidator]',


провайдеры: [{


предоставить: NG_VALIDATORS,


useExisting: EmailValidatorDirective,


мульти: правда,


класс экспорта EmailValidatorDirective реализует Validator {


конструктор () {


публичная проверка (управление: AbstractControl): ValidationErrors | нулевой {


вернуть emailValidator () (управление);


5. Измените файл src/app/app.component.ts. Импортируйте службу NgForm, создайте интерфейс IUser и создайте функцию проверки, как показано ниже.


```машинопись


импортировать {Компонент, OnInit} из '@angular/core';


импортировать { FormControl, FormGroup, Validators } из '@angular/forms';


импортировать { emailValidator } из './email-validator.directive';


интерфейс IUser {


имя: строка;


псевдоним: строка;


электронная почта: строка;


пароль: строка;


показать пароль: логическое значение;


@Компонент({


селектор: 'приложение-корень',


Url-шаблона: './app.component.html',


URL-адреса стилей: ['./app.component.scss'],


класс экспорта AppComponent реализует OnInit {


реактивная форма!: группа форм;


пользователь: IUser;


конструктор () {


this.user = {} как IUser;


ngOnInit(): недействительным {


this.reactiveForm = новая группа форм ({


имя: новый FormControl(this.user.name, [


Валидаторы.требуются,


Валидаторы.minLength(1),


Валидаторы.maxLength(250),


псевдоним: новый FormControl(this.user.nickname, [


Валидаторы.maxLength(10),


электронная почта: новый FormControl(this.user.email, [


Валидаторы.требуются,


Валидаторы.minLength(1),


Валидаторы.maxLength(250),


проверка электронной почты(),


пароль: новый FormControl(this.user.password, [


Валидаторы.требуются,


Валидаторы.minLength(15),


получить имя () {


вернуть this.reactiveForm.get('имя')!;


получить ник () {


вернуть this.reactiveForm.get('псевдоним')!;


получить электронную почту () {


вернуть this.reactiveForm.get('электронная почта')!;


получить пароль() {


вернуть this.reactiveForm.get('пароль')!;


общедоступная проверка(): недействительным {


если (this.reactiveForm.invalid) {


for (const control of Object.keys(this.reactiveForm.controls)) {


this.reactiveForm.controls[control].markAsTouched();


вернуть;


this.user = this.reactiveForm.value;


console.info('Имя:', this.user.name);


console.info('Псевдоним:', this.user.nickname);


console.info('Электронная почта:', this.user.email);


console.info('Пароль:', this.user.password);


6. Измените файл src/app/app.component.html. Добавьте форму, как показано ниже.


```разметка



Угловая реактивная проверка формы



<див класс="кол-4">


<форма [formGroup]="reactiveForm" #form="ngForm">


<дел класс = "строка">







Это поле обязательно к заполнению.




Это поле должно содержать не менее 1 символа.




Это поле должно содержать не более 250 символов.






<дел класс = "строка">







Это поле должно содержать не более 10 символов.






<дел класс = "строка">







Это поле обязательно к заполнению.




Это поле должно содержать не менее 1 символа.




Это поле должно содержать не более 250 символов.




Неверный формат электронной почты.






<дел класс = "строка">









<дел класс = "строка">










7. Измените файл src/app/app.module.ts. Импортируйте модуль ReactiveFormsModule и директиву EmailValidatorDirective, как показано ниже.


```машинопись


импортировать {ReactiveFormsModule} из '@angular/forms';


импортировать { EmailValidatorDirective } из './email-validator.directive';


декларации: [


AppComponent,


EmailValidatorDirective,


импорт: [


БраузерМодуль,


РеактивФормсМодуле,


AppRoutingModule,


8. Запустите приложение с помощью приведенной ниже команды.


```javascript


запуск нпм


angular-reactive-form-validation@1.0.0 start


нг служить


✔ Генерация пакета браузерного приложения завершена.


Исходные файлы фрагментов | Имена | Необработанный размер


поставщик.js | поставщик | 2,25 МБ |


стили.css, стили.js | стили | 454,68 КБ |


полифиллы.js | полифиллы | 294,84 КБ |


скрипты.js | скрипты | 76,33 КБ |


основной.js | главная | 27,76 КБ |


время выполнения.js | время выполнения | 6,56 КБ |


| Начальная сумма | 3,09 МБ


Дата сборки: 2022-03-21T00:40:49.519Z — Хэш: af669f909d9510f8 — Время: 3254 мс


Angular Live Development Server прослушивает localhost:4200, откройте браузер на http://localhost:4200/


✔ успешно скомпилировано.


9. Готово! Перейдите по URL http://localhost:4200/ и проверьте, работает ли приложение. См. приложение, работающее на Страницы GitHub и Stackblitz.



Репозиторий приложения доступен по адресу https://github.com/rodrigokamada/angular-reactive-form-validation.


*Это руководство было опубликовано в моем блоге на португальском языке. *



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE