DevGang
Авторизоваться

Angular + шаблонные формы — пример проверки электронной почты

Пример, созданный с помощью Angular 15.1.5 и форм, управляемых шаблонами

Это быстрый пример того, как проверить поле ввода электронной почты в Angular с помощью форм, управляемых шаблонами. Для более подробного примера регистрационной формы, которая включает в себя множество других полей, см. Angular 14 — пример проверки формы на основе шаблона.

Вот он в действии:

https://stackblitz.com/edit/angular-template-driven-forms-email-validation

Шаблон компонента с проверкой электронной почты

Шаблон компонента приложения содержит пример формы с одним полем ввода для email. Поле имеет required и  email директивы валидатора, валидатор email проверяет, содержит ли поле ввода действительный адрес электронной почты.

Событие отправки формы привязано к методу onSubmit() компонента приложения с привязкой события (ngSubmit)="onSubmit(f)". Переменная шаблона #f="ngForm" создает экземпляр FormGroup для предоставления доступа к данным формы и статусу проверки в компоненте приложения.

Валидаторы и директивы в шаблонных формах

Проверка осуществляется с помощью функций проверки, которые присоединяются к полям с помощью директив в формах, управляемых шаблонами. Валидаторы required и валидаторы email включены в структуру Angular.

Поля ввода, зарегистрированные в родительской форме

Поле ввода электронной почты регистрируется в форме с помощью директивы ngModel. В контексте родительской формы директиву можно использовать без привязки данных ([()]), вместо этого элемент управления регистрируется с использованием атрибута ввода name, а форма поддерживает синхронизацию данных.

<div class="card m-3">
    <h5 class="card-header text-center">Angular + Template-Driven Forms - Email Validation Example</h5>
    <div class="card-body">
        <form #f="ngForm" (ngSubmit)="onSubmit(f)" novalidate>
            <div class="row">
                <div class="col mb-3">
                    <label class="form-label">Email</label>
                    <input type="text" name="email" ngModel #email="ngModel" class="form-control" [ngClass]="{ 'is-invalid': f.submitted && email.invalid }" required email>
                    <div *ngIf="f.submitted && email.errors" class="invalid-feedback">
                        <div *ngIf="email.errors.required">Email is required</div>
                        <div *ngIf="email.errors.email">Email must be a valid email address</div>
                    </div>
                </div>
            </div>
            <div class="text-center">
                <button class="btn btn-primary me-1">Submit</button>
                <button class="btn btn-secondary" type="reset">Reset</button>
            </div>
        </form>
    </div>
</div>

Компонент приложения, который обрабатывает данные формы

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

Метод onSubmit() вызывается с переменной шаблона NgForm при отправке формы, он привязывается к элементу формы в шаблоне с использованием синтаксиса привязки событий Angular ((ngSubmit)="onSubmit(f)"). Если форма действительна, отображается простое alert javascript с введенными значениями.

import { Component } from '@angular/core';
import { NgForm } from '@angular/forms';

@Component({ selector: 'app-root', templateUrl: 'app.component.html' })
export class AppComponent {
    onSubmit(f: NgForm) {
        // stop here if form is invalid
        if (f.invalid) {
            return;
        }

        alert('SUCCESS!! :-)\n\n' + JSON.stringify(f.value, null, 4));
    }
}
#Angular
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу