/angular-guide > _

ფორმები ანგულარში

მომხმარებლის მიერ შეყვანილი მონაცემების მოხელთება ვებ აპლიკაციების ერთ-ერთი ყველაზე მნიშვნელოვანი ასპექტია. აპლიკაციებში გამოიყენება ფორმები, რათა მომხმარებლებმა შეძლონ ავთენტიფიკაცია, პირადი ინფორმაციის შეყვანა, წერილების გაგზავნა და ა.შ.

ანგულარში ფორმების აგებისა და შეყვანილი ინფორმაციის მოხელთების ორი გზა არსებობს: template-driven და reactive. ორივე მეთოდით შესაძლებელია მომხმარებლის მიერ წარმოებული მოვლენების მოსმენა, შეყვანილი ინფორმაციის ვალიდაცია, ფორმის მოდელების შექმნა და მათი ცვლილება-მონიტორინგი, თუმცა ამ ორ მიდგომას თავისი პლიუსები და მინუსები აქვს.

სანამ ორივე მიდგომას ვისწავლით პრაქტიკაში, განვიხილოთ თითოეული მათგანის თავისებურებები:

reactive forms: გვაძლევს უშუალო წვდომას ფორმის ობიექტის მოდელზე. template-driven ფორმებისგან განსხვავებით ის უფრო მძლავრია. შესაძლებელია მისი მასშტაბების გაფართოება, მოქნილად და მრავალჯერადად გამოყენება, და მარტივად დატესტვა. მისი ლოგიკის ძირითადი ნაწილი კლასში იწერება.

template-driven forms: საჭიროებს თემფლეითში დირექტივებს, ფორმის ობიექტის მოდელის შექმნისა და მანიპულაციისთვის. ეს მეთოდი ყველაზე ეფექტურია მარტივი ფორმების ასაგებად, თუმცა რთულია მისი მასშტაბების გაზრდა. თუ ჩვენ გვჭირდება ძალიან ელემენტარული ფორმა, რომლის ლოგიკაც პირდაპირ თემფლეითში იქნება, მაშინ ეს მიდგომა იდეალური არჩევანია.

მნიშვნელოვანი კლასები

ორივე ტიპის ფორმები დაშენებულია შემდეგ კლასებზე:

  • FormControl - თვალყურს ადევნებს თითოეული ფორმის კონტროლის მნიშვნელობასა და ვალიდურობას.
  • FormGroup - თვალყურს ადევნებს კონტროლთა ჯგუფის მნიშვნელობებსა და სტატუსს.
  • FormArray - თვალყურს ადევნებს კონტროლთა მასივში მნიშვნელობებსა და სტატუსს.
  • ControlValueAccessor - ქმნის ხიდს ანგულარის FormControl ინსტანციებსა და DOM-ის ელემენტებს შორის.

სწორედ ამ კლასების საშუალებით მუშაობს ფორმები ანგულარში, თუმცა template-driven ფორმებში ეს კლასები იმპლიციტურად გამოიყენება დირექტივებს მიერ, ხოლო reactive ფორმებში ამ კლასებთან უშუალო შეხება გვაქვს, რაც უფრო მეტ ძალაუფლებას გვაძლევს ფორმებზე.

ამ თავში ჩვენ ასევე განვიხილავთ ვალიდატორებსა და ვალიდაციას, რომელიც ფორმების მნიშვნელოვანი ნაწილია თანამედროვე აპლიკაციებში.