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

מדריך אנגולר | reactive forms – חיבור הטופס הריאקטיבי לתצוגת הטופס

וינר יאיר 15 בינואר 2021 אין תגובות

אחרי שהיצרנו והרכבנו את האובייקט הריאקטיבי בעזרת formBuilder .עכשיו כל שנותר לנו זה לבנות את הטופס הHTML. ולשייך ולהגדיר, בעזרת formControlName , וגם בעזרת FormGroup. את הפקדים בטופס.

הטופס בצד הHTM, בשלמותו (לפני ווליצדיות)

אמשיך להציג את אותה הדוגמה מהפוסט הקודם (הדוגמה הזו תלווה אותנו לאורך כל המיני קורס הזה של טפסים מגיבים באנגולר)

לטופס הדוגמה הסופי

<form *ngIf="jobRegistrationForm" [formGroup]="jobRegistrationForm" (submit)="submit(jobRegistrationForm)">
    <div class="form-group">
        <label>שם מלא<span class="red-star">*</span></label>
        <input  formControlName="fullName" type="text" value="" placeholder="הקלדו כאן" />
    </div>
    <div class="form-group">
        <label>מספר טלפון<span class="red-star">*</span></label>
        <div [formGroup]="jobRegistrationForm.get('phoneForm')" class="inner-group-phone">
            <input formControlName="number" type="text" value="" placeholder="הקלדו כאן" />
            <div class="prefix-container">
                <button (click)="displayPrefixlist()" type="button" class="choose-prefix"></button>
                <ul *ngIf="showPrefix" class="prefix-list">
                    <li *ngFor="let prefix of prefixList">
                        <button (click)="choosenPrefix(prefix)" type="button" class="prefix">{{prefix}}</button>
                    </li>
                </ul>
                <input type="text" formControlName="prefix" [attr.disabled]="true" value="" placeholder="000" />
            </div>
        </div>
    </div>
    <div class="form-group">
        <label>אימייל<span class="red-star">*</span></label>
        <div [formGroup]="jobRegistrationForm.get('emailForm')"  class="inner-group-email">
        <input  formControlName="email" type="email" value=""  placeholder="אימייל לראשונה"/>
        <input formControlName="reEmail" type="email" value="" placeholder="אימייל בשנית" />
        </div>
    </div>
    <div class="form-group">
        <label>סטטוס<span class="red-star">*</span></label>
       <div (change)="checkJobStatus()" class="radio-group">
           <input type="radio" name="jobStatus" formControlName="jobStatus" [value]="true" />
           <span class="radio-input-text">עובד</span></div>
       <div (change)="checkJobStatus()" class="radio-group">
           <input type="radio" name="jobStatus" formControlName="jobStatus" [value]="false" />
           <span class="radio-input-text">לא עובד</span></div>

    </div>
    <div *ngIf="dontHaveJobYet" class="form-group">
        <label>מאיזה יום הפסקת לעבוד<span class="red-star">*</span></label>
        <input formControlName="lastDayJob" type="date" >
    </div>
    <div class="form-group">
        <input type="checkbox" formControlName="termsApproved" /> 
        <span>יש לאשר את תנאי השימוש<span class="red-star">*</span></span>
    </div>
    <button class="button-action">אני רוצה!</button>
</form>

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

שלב ראשון : תגיד form

<form *ngIf="jobRegistrationForm"
      [formGroup]="jobRegistrationForm"
      (submit)="submit(jobRegistrationForm)">

זוהי התגיד הראשונה שבעצם מגדירה את הטופס. וכן באנגולר ושימוש ב-reactive form נשייך את formGroup שהגדרנו בקובץ TS. (שם ה form group בדוגמה הוא jobRegistrationForm)

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

עוד אפשר לראות שהתווסף ngIf . זה מכוון שבניית הטופס מוגדרת ב ngOnInit וכן בתחילת הריצה אין קיום למשתנים המוגדרים ב formControlName באיפונטים השונים.

שלב שני : הגדרת האינפוטים עם formControlName

<div class="form-group">
        <label>שם מלא<span class="red-star">*</span></label>
        <input  formControlName="fullName" type="text" value="" placeholder="הקלדו כאן" />
    </div>

כל פקד שתרצו שהוא יקלט בטופס הטופס שלכם , יש להגדיר לו formControlName . כמו במקרה הזה . הגדרו את הפקד עם formControlName="fullName" כלומר הוא ישמר באובייקט על המפתח fullName.

הצצה ל-TS מהשיעור הקודם :

this.jobRegistrationForm = this.fb.group({
      fullName: this.fb.control(''),

השם שהגדרתם ב formControlName . חייב להיות קיים באובייקט הריאקטיבי שלכם אחרת תקבלו שגיאה.

שלב שלישי : form group בתוך form group

כפי שלמדנו וראינו בשיעורים הקודמים יש חשיבות גבוהה למבנה הטופס שלכם ולכן הגדרנו גם פה בדוגמה כמה form group בתוך ה form group הראשי. זה על מנת לייצר הפרדה מוחלטת במידע ושכן גם תעזור לנו להתמודד עם פונקציונליות בהמשך (למשל וולידציות).

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

    <div class="form-group">
        <label>אימייל<span class="red-star">*</span></label>
        <div [formGroup]="jobRegistrationForm.get('emailForm')"  class="inner-group-email">
        <input  formControlName="email" type="email" value=""  placeholder="אימייל לראשונה"/>
        <input formControlName="reEmail" type="email" value="" placeholder="אימייל בשנית" />
        </div>
    </div>

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

הצצה לטופס ב TS : זה עטוף בטופס הראשי כמובן .

 emailForm : this.fb.group({
        email: [''],
        reEmail: ['']
      }),

ולסיכום בניית הטופס באנגולר בצד HTML

הבנייה בHTML היא לא פחות חשובה מהבניה של האובייקט עצמו. יש לבנות את הטופס בהתאם למבנה שהגדרתם מראש. וכפי שאפשר לראות יש דמיון (ואפילו חפיפה) במבנה בין הקבצים. ואם תיישמו עבמודה מסודרת ובניה נכונה בטפסים מגיבים. חייכם התניני קוד יהיו יפים יפים. 😁. בהצלחה.

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

מדריך אנגולגר טופס ריאקטיבי שיעור תשיעי ואחרוןמדריך אנגולר | סיכום מיני קורס אנגולר reactive forms מדריך אנגולגר טופס ריאקטיבי שיעור שמינימדריך אנגולר | reactive forms – ולידציות וחיווי בUI מדריך אנגולגר טופס ריאקטיבי שיעור 6מדריך אנגולר | reactive forms – הוספת ולידציות מובנות מדריך אנגולגר טופס ריאקטיבי שיעור 2מדריך אנגולר | reactive forms – היכרות בסיסית עם AbstractControl
אנגולר לימודי אנגולר מדריך אנגולר קורס אנגולר

אודות המחבר

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


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

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
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 אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד