راهنمای جامع فرم های زاویه ای: مفاهیم و مثال های بنیادی

Angular یک چارچوب قوی برای مدیریت فرم ها با هر دو رویکرد الگو محور و واکنشی فراهم می کند. این راهنما شما را از طریق مفاهیم کلیدی راهنمایی می کند و برای هر یک نمونه کد ارائه می دهد.
1. مفاهیم اساسی فرم های زاویه ای
فرم های زاویه ای امکان گرفتن و اعتبار سنجی ورودی کاربر را فراهم می کنند. آنها در دو طعم وجود دارند: Template-Driven و Reactive. هر دو روش راههایی برای اتصال ورودی کاربر به دادههای مدل و اعتبارسنجی آن دادهها ارائه میکنند.
2. فرم های قالب محور در Angular
فرم های الگو محور برای ایجاد و مدیریت فرم ها در قالب HTML به دستورالعمل های Angular متکی هستند.
HTML:
جزء:
import { Component } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'app-template-driven-form',
templateUrl: './template-driven-form.component.html'
})
export class TemplateDrivenFormComponent {
onSubmit(form: NgForm) {
console.log('Form Data:', form.value);
}
}
3. مقدار را در فرم های الگو محور تنظیم کنید
برای تنظیم برنامهای مقادیر در یک قالب مبتنی بر الگو:
HTML:
جزء:
import { ViewChild, AfterViewInit } from '@angular/core';
@Component({
selector: 'app-template-driven-form',
templateUrl: './template-driven-form.component.html'
})
export class TemplateDrivenFormComponent implements AfterViewInit {
@ViewChild('myForm') form: NgForm;
ngAfterViewInit() {
// Ensure the form is available
}
setFormValue() {
if (this.form) {
this.form.setValue({
name: 'John Doe',
email: 'john.doe@example.com'
});
}
}
}
4. فرم های واکنشی در Angular
فرمهای واکنشی انعطافپذیرتر و مقیاسپذیرتر هستند و امکان استفاده از تکنیکهای برنامهنویسی واکنشی را فراهم میکنند.
HTML:
جزء:
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-reactive-form',
templateUrl: './reactive-form.component.html'
})
export class ReactiveFormComponent implements OnInit {
myForm: FormGroup;
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.myForm = this.fb.group({
name: ['', Validators.required],
email: ['', [Validators.required, Validators.email]]
});
}
onSubmit() {
console.log('Form Data:', this.myForm.value);
}
}
5. FormBuilder در فرم های واکنشی
FormBuilder ایجاد کنترل های فرم را ساده می کند.
جزء:
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
name: ['', Validators.required],
email: ['', [Validators.required, Validators.email]]
});
}
6. SetValue & PatchValue در Angular
setValue
مقدار را برای همه کنترل ها تنظیم می کند، while patchValue
اجازه به روز رسانی جزئی را می دهد.
جزء:
setFormValue() {
this.myForm.setValue({
name: 'John Doe',
email: 'john.doe@example.com'
});
}
patchFormValue() {
this.myForm.patchValue({
email: 'john.doe@example.com'
});
}
7. تغییر وضعیت در فرم های زاویه ای
statusChanges
هر زمان که وضعیت اعتبار سنجی فرم تغییر کند یک رویداد منتشر می کند.
جزء:
ngOnInit() {
this.myForm.statusChanges.subscribe(status => {
console.log('Form Status:', status);
});
}
8. تغییرات ارزش در فرم های زاویه ای
valueChanges
هر زمان که مقدار فرم یا هر کنترلی تغییر کند یک رویداد منتشر می کند.
جزء:
ngOnInit() {
this.myForm.valueChanges.subscribe(value => {
console.log('Form Value:', value);
});
}
9. FormControl
FormControl
برای ایجاد کنترل های فرم فردی استفاده می شود.
جزء:
const nameControl = new FormControl('John Doe', Validators.required);
10. FormGroup
FormGroup
انباشته های متعدد FormControl
نمونه ها در یک گروه واحد
جزء:
this.myForm = new FormGroup({
name: new FormControl('John Doe', Validators.required),
email: new FormControl('john.doe@example.com', [Validators.required, Validators.email])
});
11. مثال FormArray
FormArray
می تواند یک آرایه از FormControl
، FormGroup
، یا دیگر FormArray
نمونه ها
HTML:
جزء:
get emails() {
return this.myForm.get('emails') as FormArray;
}
addEmail() {
this.emails.push(new FormControl('', [Validators.required, Validators.email]));
}
ngOnInit() {
this.myForm = this.fb.group({
name: ['', Validators.required],
email: ['', [Validators.required, Validators.email]],
emails: this.fb.array([this.fb.control('', [Validators.required, Validators.email])])
});
}
12. با استفاده از FormArray فرم های پویا یا تودرتو بسازید
FormArray به فرمهای پویا اجازه میدهد، جایی که کاربران میتوانند در صورت نیاز، کنترلهایی را اضافه یا حذف کنند.
جزء:
addEmail() {
this.emails.push(this.fb.control('', [Validators.required, Validators.email]));
}
13. SetValue & PatchValue در FormArray
setValue
و patchValue
همچنین قابل استفاده با FormArray
.
جزء:
setEmails() {
this.emails.setValue(['email1@example.com', 'email2@example.com']);
}
patchEmails() {
this.emails.patchValue(['email1@example.com']);
}
14. گزینه Options Dropdown را انتخاب کنید
کشویی را می توان به راحتی با فرم ها ادغام کرد.
HTML:
جزء:
options = ['Option 1', 'Option 2', 'Option 3'];
ngOnInit() {
this.myForm = this.fb.group({
selectedOption: ['', Validators.required]
});
}
15. فرم های تایپ شده در Angular
فرم های تایپ شده ایمنی نوع را برای کنترل های فرم بهبود می بخشد.
جزء:
interface FormModel {
name: string;
email: string;
}
const form: FormGroup<FormModel> = new FormGroup({
name: new FormControl<string>(''),
email: new FormControl<string>('')
});
16. FormRecord در Angular
FormRecord
امکان ایجاد کنترل پویا در گروه های فرم را فراهم می کند.
جزء:
const record: FormRecord<FormControl<string>> = new FormRecord({
dynamicKey: new FormControl<string>('Initial Value')
});
record.addControl('newKey', new FormControl<string>('New Value'));
نتیجه
این راهنما مفاهیم اساسی فرمهای Angular را پوشش میدهد و دانش ساخت هر دو فرم الگو محور و واکنشپذیر را در اختیار شما قرار میدهد. با درک این مفاهیم و استفاده از نمونه های کد ارائه شده، می توانید فرم های قوی، پویا و ایمن در برنامه های Angular خود ایجاد کنید.
کد نویسی مبارک!
کاوش در کد
برای بررسی جزئیات کد، از مخزن GitHub دیدن کنید.