[[oktatas:web:angular|< Angular]]
====== Angular - Reaktív űrlapépítő ======
* **Szerző:** Sallai András
* Copyright (c) 2025, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Szükséges modulok =====
import {
FormBuilder,
FormControl,
FormGroup,
ReactiveFormsModule
} from '@angular/forms';
//...
imports: [ReactiveFormsModule],
A ReactiveFormsModule szükséges a reaktív űrlapok használatához.
Ha a reaktív űrlapot csoportosítva használjuk, akkor szükség van
a FormGroup-ra is. Ha a csoportot FormBuilder-rel építjük, akkor
természetesen a FormBuilder-re is szükség van.
A FormControl-t használjuk az egyes űrlap mezők meghatározásához.
===== Bevitel =====
Az egyes input elemekhez kötelezően egy formControlName attribútumot készítünk.
TypeScript oldalon ezeken a neveken lehet elérni az input elemek tartalmát.
===== Kattintás =====
A kattintás általában egy nyomógombra történik. A nyomógomb kétféle eseményt válthat ki:
* click
* submit
Attól függ milyen típusú. vagy .
A submit eseményt viszont a form elemen kell figyelnünk.
export class AppComponent {
employeeForm !: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit() {
this.employeeForm = this.formBuilder.group({
name: new FormControl(''),
city: new FormControl(''),
salary: new FormControl('')
})
}
onSubmit() {
console.log(this.employeeForm.value);
}
}
Az önálló űrlap elemeket a fomr elemmel csoportosítjuk. Ehhez használjuk az Angular [fromGrup] direktíváját.
Az űrlapot célszerű submit eseménnyel kezelni, akkor használhatjuk a (ngSubmit) direktívát.
Ha button elemet hozunk létre, annak típusa legyen submit, hiszen csak így tudjuk kiváltani a submit eseményt.
===== Teljes kód =====
import { Component } from '@angular/core';
import {
FormBuilder,
FormControl,
FormGroup,
ReactiveFormsModule
} from '@angular/forms';
@Component({
selector: 'app-root',
standalone: true,
imports: [ReactiveFormsModule],
templateUrl: './app.component.html',
styleUrl: './app.component.css'
})
export class AppComponent {
employeeForm !: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit() {
this.employeeForm = this.formBuilder.group({
name: new FormControl(''),
city: new FormControl(''),
salary: new FormControl('')
})
}
onSubmit() {
console.log(this.employeeForm.value);
}
}
Eredmény:
{
"name": "Mari",
"city": "Pécs",
"salary": "391"
}
===== Rövidítés =====
A FormControl konstruktorok hívása helyett elég egy szögletes zárójelben leírni
egy mező tulajdonságait.
import {
FormBuilder,
FormGroup,
ReactiveFormsModule
} from '@angular/forms';
//...
ngOnInit() {
this.employeeForm = this.formBuilder.group({
name: [''],
city: [''],
salary: ['']
})
}
A FormControl törölhető az import sorból.
===== Érvényesség ellenőrzése =====
Az érvényesség használatához rendelkezésre áll egy Validators nevű osztály. Ennek statikus tagjaival különféle érvényességeket vizsgálhatunk.
import {
FormBuilder,
FormGroup,
ReactiveFormsModule,
Validators
} from '@angular/forms';
Az érvényesség használata rövidítés esetén:
ngOnInit() {
this.employeeForm = this.formBuilder.group({
name: ['', Validators.required],
city: [''],
salary: ['']
})
}