Поиск по сайту
Ctrl + K
Вопросы по Angular

Как сбросить форму в Angular?

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

В Angular формы могут быть управляемыми (Template-driven) или реактивными (Reactive). Мы рассмотрим оба подхода и покажем, как сбрасывать формы.

1. Управляемые формы (Template-driven Forms)

Для применения управляемых форм в Angular нужно использовать директиву ngModel. Вот как можно сбросить форму:

HTML-шаблон


<form #myForm="ngForm" (ngSubmit)="onSubmit(myForm)">
    <label for="name">Имя:</label>
    <input id="name" name="name" ngModel required>

    <label for="email">Email:</label>
    <input id="email" name="email" ngModel required>

    <button type="submit">Отправить</button>
    <button type="button" (click)="resetForm(myForm)">Сбросить</button>
</form>

Компонент TypeScript

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

@Component({
    selector: 'app-example',
    templateUrl: './example.component.html',
})
export class ExampleComponent {
    onSubmit(form: NgForm) {
        console.log('Форма отправлена!', form.value);
        // Вы можете добавить код для обработки данных здесь
    }

    resetForm(form: NgForm) {
        form.reset();
    }
}

В этом примере, используя метод reset() объекта формы, мы можем сбросить все поля формы к начальным значениям.

2. Реактивные формы (Reactive Forms)

В реактивных формах вы используете класс FormGroup для создания формы. Вот пример сброса формы:

HTML-шаблон


<form [formGroup]="myForm" (ngSubmit)="onSubmit()">
    <label for="name">Имя:</label>
    <input id="name" formControlName="name">

    <label for="email">Email:</label>
    <input id="email" formControlName="email">

    <button type="submit">Отправить</button>
    <button type="button" (click)="resetForm()">Сбросить</button>
</form>

Компонент TypeScript

import {Component, OnInit} from '@angular/core';
import {FormBuilder, FormGroup} from '@angular/forms';

@Component({
    selector: 'app-example',
    templateUrl: './example.component.html',
})
export class ExampleComponent implements OnInit {
    myForm: FormGroup;

    constructor(private fb: FormBuilder) {
        this.myForm = this.fb.group({
            name: [''],
            email: ['']
        });
    }

    ngOnInit() {
    }

    onSubmit() {
        console.log('Форма отправлена!', this.myForm.value);
        // Логика обработки данных здесь
    }

    resetForm() {
        this.myForm.reset();
    }
}

В этом примере, вызов метода reset() на объекте FormGroup позволяет сбросить все контроллеры и восстановить их в первоначальном состоянии.

Заключение

Сброс формы в Angular — это простая, но важная задача. В зависимости от выбранного подхода (управляемые или реактивные формы), способ выполнения сброса будет различаться. В обоих случаях вы можете легко сбросить форму и подготовить её для нового ввода данных от пользователя. Используйте указанные методы в своих проектах, чтобы улучшить пользовательский опыт.