В этом блоге мы увидим, как использовать реактивные формы в angular4.

Мы можем работать с двумя разными типами форм: шаблонными и реактивными формами. В этом посте мы увидим, как использовать реактивные формы на примере.

Angular4 Реактивные формы:

Давайте создадим шаблон формы с обязательными для пользователя полями.

<form>
<div>
  <label>First Name</label>
  <input type="text" name="first_name"/>
</div>
<div>
  <label>Last Name</label>
  <input type="text" name="last_name"/>
</div>
<div>
  <label>Email</label>
  <input type="text" name="email"/>
</div>
<button type="submit">Submit</button>
<button type="button">Cancel</button>
</form>

В приведенном выше шаблоне требования

Имя: должно быть указано уникальное имя.

Фамилия: необходимо указать уникальную фамилию.

Электронная почта: действительный идентификатор электронной почты, который является уникальным и обязательным.

При использовании реактивных форм импортируйте ReactiveFormsModule в ваш app.module.js, а BrowserModule используется для начальной загрузки.

import {NgModule} from '@angular/core'
import {ReactiveFormsModule} from '@angular/forms'
import {BrowserModule} from '@angular/platform-browser'
import { AppComponent } from './app.component';
@NgModule({
 imports: [ BrowserModule, ReactiveFormsModule ],
 declarations: [ AppComponent],
 bootstrap: [ AppComponent ]
})
export class AppModule {}

импортировать FormGroup, FormControl, Validators в компонент вашего приложения (классы, связанные с реактивной формой)

  • FormGroup — значением будет объект; Каждый элемент объекта должен быть FormControl.
  • FormControl — значение представляет собой строку или объект; Это значение по умолчанию для управления формой.
import { FormGroup, FormControl } from '@angular/forms';
import { Component, OnInit } from '@angular/core'
@Component({
selector: 'my-app',
templateUrl: 'src/app.component.html'
})
export class AppComponent implements OnInit {
private sampleForm: FormGroup;
constructor() {}
ngOnInit() {
  // Create new Form control with all your required fields.
  this.sampleForm = new FormGroup({
    'first_name': new FormControl(),
    'last_name': new FormControl(),
    'email': new FormControl(),
  });
}
cancel() {
  console.log(this.sampleForm);
}
onSubmit() {
  console.log('Form successful submit.');
  console.log(this.sampleForm.value);
}
}

В приведенном выше примере мы создали FormGroup для упомянутых полей. Теперь нам нужно назначить объект формы (formGroup, formControlName) для HTML следующим образом.

<form [formGroup]="sampleForm" (ngSubmit)="onSubmit()">
<div>
  <label>First Name</label>
  <input type="text" name="first_name" formControlName="first_name"/>
</div>
<div>
  <label>Last Name</label>
  <input type="text" name="last_name" formControlName="last_name"/>
</div>
<div>
  <label>Email</label>
  <input type="text" name="email" formControlName="email"/>
</div>
<button type="submit">Submit</button>
<button type="button" (click)="cancel()">Cancel</button>
</form>

Когда пользователь нажимает кнопку отправки, функция onSubmit() срабатывает и предоставляет вам данные формы в консоли (здесь вы можете выполнить свою логику), то же самое для отмены.

Статья изначально была опубликована в Блоге MicroPyramid