קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ אנגולר ♦ מדריך אנגולר | reactive forms – היכרות בסיסית עם AbstractControl

מדריך אנגולר | reactive forms – היכרות בסיסית עם AbstractControl

וינר יאיר 17 בדצמבר 2020 אין תגובות

אפשרויות רבות מתאפשרות בעבודה עם reactive forms , ולמעשה כל האפשרויות הללו מגיעות מהאינסטנס של AbstractControl. שמביא איתו את כל ההגדרות לתוך הטופס שלנו.

אני לא אפרט על כל האפשרוויות המוצאות לנו, אך כן אציין את החשובות, שכן נתקלים בהם בעבודה למשל עם טופס דינאמי או מורכבויות כאלו או אחרות שיכולים להיות בעבודה עם טפסים.

רשימת תכונות חשובות של AbstractControl

  • value – מדפיס את המידע הקיים בטופס.
  • validators – משמש בכדי להגדיר ולידציות לכל פקד
  • valid – מחזיר תשובה בוליאנית. אם הטופס ולידי יחזיר true.
  • invalid – מחזיר תשובה בוליאנית. אם הטופס לא ולידי יחזיר true.
  • pristine \ dirty \ touched \ untouched – מחזירים תשובה בולאנית, כמו כן מאפשרים לנו לייצר חיוויים שונים בUI . למשל אם המשתמש נגע בשדה אבל לא מילא נוכל להציג חיווי מתאים. כמו כן אנגולר גם מוסיף קלאסים בHTML בהתאמה כך שתוכלו גם להשפיע על הקלאסים בCSS.
  • setValue – להגדיר מראש תוכן שיוצג בטופס. לדוגמה בעריכה, אפשר לטעון את המידע הקיים לפקדים.
  • reset – מחיקה\נקיון של הטופס. שימושי אם קיים כפתור "נקה טופס" וכו..
  • get – מאפשר לנו לגשת לcontol ילד על ידי ציון השם של אותו control. (מזכיר קצת כשרוצים לגשת לערך כלשהו באובייקט).

דוגמה לשימוש ב- value

<form [formGroup]="myForm" (ngSubmit)="onSubmit(myForm)">
  <label>
    שם פרטי:
    <input type="text" formControlName="firstName">
  </label>

  <label>
    שם משפחה:
    <input type="text" formControlName="lastName">
  </label>
  <button type="submit">אישור</button>
</form>

<div>{{myForm.value}}}</div>  
<!-- 
ידפיס את המידע בטופס , לדוגמא: 
{
firstName: tanin,
lastName: code
}
>

דוגמה לשימוש ב- validator

import { Component } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-profile-editor',
  templateUrl: './profile-editor.component.html',
  styleUrls: ['./profile-editor.component.css']
})
export class ProfileEditorComponent implements OnInit{
  public myForm : FormGroup;
  constuctor() {};
  ngOnInit(){
  this.myForm = new FormGroup({
    firstName: new FormControl('',Validators.required),
    lastName: new FormControl('',[Validators.required, Validators.maxLength(4)]),
  });
  };
   onSubmit(form: FormGroup) {
   console.log(form.value)
   }

דוגמה לשימוש ב- invalid/valid

<form [formGroup]="myForm" (ngSubmit)="onSubmit(myForm)">
  <label>
    שם פרטי:
    <input type="text" formControlName="firstName">
  </label>

  <label>
    שם משפחה:
    <input type="text" formControlName="lastName">
    <span *ngIf="lastName.valid">שם המשפחה אכן תקין</span>
  </label>
  <button [disabled]="form.invalid" type="submit">אישור</button>
</form>
 

דוגמה לשימוש ב- pristine \ dirty \ touched \ untouched

<form [formGroup]="myForm" (ngSubmit)="onSubmit(myForm)">
  <label>
    שם פרטי:
    <input type="text" formControlName="firstName">
  </label>
  <label>
    שם משפחה:
    <input type="text" formControlName="lastName">
   <div class="form-control-feedback"
           *ngIf=" lastName.dirty || lastName.touched">
     <span>חובה לשים שם משפחה בקיצור של עד 4 אותיות</span>
      </div>
  </label>
  <button [disabled]="form.invalid" type="submit">אישור</button>
</form>

דוגמה לשימוש ב- setValue

import { Component } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-profile-editor',
  templateUrl: './profile-editor.component.html',
  styleUrls: ['./profile-editor.component.css']
})
export class ProfileEditorComponent implements OnInit{
  public myForm : FormGroup;
  constuctor() {};
  ngOnInit(){
    this.myForm = new FormGroup({
    firstName: new FormControl('',Validators.required),
    lastName: new FormControl('',[Validators.required, Validators.maxLength(4)]),
  });
    // אפשר להזין ערכים לתוך שדה ספציפי
      this.newForm.controls.firstName.setValue('tanin');
    
    // אפשר להזין ערכים לתוך כל השדות של הטופס
    this.newForm.setValue({
   firstName: 'tanin',
   lastName: 'code'
});
  };
   onSubmit(form: FormGroup) {
   console.log(form.value)
   }

דוגמה לשימוש ב- reset

<form [formGroup]="myForm" (ngSubmit)="onSubmit(myForm)">
  <label>
    שם פרטי:
    <input type="text" formControlName="firstName">
  </label>
  <label>
    שם משפחה:
    <input type="text" formControlName="lastName">
   <div class="form-control-feedback"
           *ngIf=" lastName.dirty || lastName.touched">
     <span>חובה לשים שם משפחה בקיצור של עד 4 אותיות</span>
      </div>
  </label>
  <button [disabled]="form.invalid" type="submit">אישור</button>
  <button  type="button" (click)="myForm.reset()" >נקה טופס</button>

</form>

דוגמה לשימוש ב- get

import { Component } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-profile-editor',
  templateUrl: './profile-editor.component.html',
  styleUrls: ['./profile-editor.component.css']
})
export class ProfileEditorComponent implements OnInit{
  public myForm : FormGroup;
  constuctor() {};
  ngOnInit(){
  this.myForm = new FormGroup({
    firstName: new FormControl(''),
    lastName: new FormControl(''),
  });
  };
   onSubmit(form: FormGroup) {
     // לגשת לערך ספציפי בתוך אובייקט הטופס הריאקטיבי
   let firstName = form.get('firstName').value;
   console.log(form.value)
   }

סיכום שיעור

כמו כן יש עוד הרבה דברים מעניינים בעולם הטפסים הריקטיביים של אנגולר, עברנו על דברים בסיסיים שמשתמשים בהם המון. אבל כן יש עוד המון המון דברים, ולכן חשוב שנבין את שיטת העבודה ומפה יהיה קל יותר להמשיך ולהעמיק. אז קדימה , ממשיכים לשיעורים הבאים 🐊

פוסטים קשורים:

מדריך-אנגולר-reactive formאיך יוצרים טופס פשוט – אנגולר וטפסים מגיבים | Reactive Forms מדריך אנגולגר טופס ריאקטיבי שיעור תשיעי ואחרוןמדריך אנגולר | סיכום מיני קורס אנגולר reactive forms מדריך , קורס באנגולגר טופס ריאקטיבי שיעור 3מדריך אנגולר | reactive forms – בסיס לבניית הטופס המגיב. מדריך-אנגולגר-טופס-ריאקטיבי-שיעור-חמישימדריך אנגולר | reactive forms – חיבור הטופס הריאקטיבי לתצוגת הטופס
reactive form לימודי אנגולר מדריך אנגולר קורס אנגולר

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד