برنامه نویسی

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

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 دیدن کنید.


نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا