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

מדריך אנגולר | reactive forms – ולידציות וחיווי בUI

וינר יאיר 6 בפברואר 2021 אין תגובות

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

  1. קלאסים של ולידציות ng-pristine ,ng-dirty , ng-touch
  2. הוספת HTML לפי ולידציות על שדה, טופס אח חלק מהטופס , formGroup במצבים של valid, invalid
  3. שליחת הטופס

קלאסים של ולידציות ng-pristine ,ng-dirty , ng-touch

ישנם מספר קלאסים מובנים שאנגולר מספק במקרה של שדות הקשורים לטפסים. אם תעשו בדוק מרכיב על שדה כלשהו תוכלו לראות אותם, למשל:

ולידציות אנגולר html

אפשר לראות כי ישנם קלאים שונים בין שדה שכן נגעו בו, ושדה שלא נגעו בו עדיין. למשל שדה שכן המשתמש נגע בו יקבל קלאסים כאלו:

ng-invalid ng-touched ng-dirty

ושדה שאינו עבר אינטראקיה יהיה בעל הקלאסים הללו:

ng-untouched ng-pristine ng-invalid

** כמובן שקלאסים אלו נוספים לרשימת הקלאסים שלכם ואינם משפיעים על קלאסים שהגדרתם , אך במידה ותרצו להוסיף קלאסים על מנת לייצר חיווי של ולדציה, אז אנגולר כבר עשו את זה בשבילכם 😊😊😊

הוספת HTML לפי ולידציות על שדה, טופס אח חלק מהטופס , formGroup במצבים של valid, invalid

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

  valid: boolean
  invalid: boolean
  errors: ValidationErrors | null
  pristine: boolean
  dirty: boolean
  touched: boolean
  untouched: boolean
   hasError(errorCode: string, path?: string | (string | number)[]): boolean

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

<div class="form-group">
        <label>שם מלא<span class="red-star">*</span></label>
        <input  formControlName="fullName" type="text" value="" placeholder="הקלדו כאן" />
        <span *ngIf="jobRegistrationForm.controls.fullName.invalid && (jobRegistrationForm.controls.fullName.dirty || jobRegistrationForm.controls.fullName.touched)" class="invalid-text"> הזינו שם ושם משפחה</span>
    </div>

הנה דוגמה של חיווי ולידציה על formGroup

 <div class="form-group">
        <label>אימייל<span class="red-star">*</span></label>
        <div [formGroup]="jobRegistrationForm.get('emailForm')" [ngClass]="{'form-not-valid' : jobRegistrationForm.get('emailForm').hasError('emailsAreSame')}" class="inner-group-email">
        <input [ngClass]="{'input-not-valid': jobRegistrationForm.get('emailForm').controls.email.hasError('email')}" formControlName="email" type="email" value=""  placeholder="אימייל לראשונה"/>
        <input [ngClass]="{'input-not-valid': jobRegistrationForm.get('emailForm').controls.reEmail.hasError('email')}" formControlName="reEmail" type="email" value="" placeholder="אימייל בשנית" />
        </div>
        <span *ngIf="jobRegistrationForm.get('emailForm').hasError('emailsAreSame') && (jobRegistrationForm.get('emailForm').controls.email.dirty || jobRegistrationForm.get('emailForm').controls.email.touched)" class="invalid-text"> המיילים אינם זהים</span>
    </div>

ולידציה על שליחת הטופס

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

    <button [disabled]="jobRegistrationForm.invalid" [ngClass]="{'btn-invalid': jobRegistrationForm.invalid}" class="button-action">אני רוצה!</button>

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

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

אנחנו כבר לקראת הסוף! – סיכום השיעור

אנחנו כבר לקראת סיום של המיני קורס אנגולר טפסים מגיבים! . מקווים מאד שהמדריך זה עזר להם ולימד אתכם כמה דברים על בניית טפסים. כל עולם הולידציות בHTML הוא שימושי מאד וחוזר על עצמו רבות
מצאו את הדרך הנוחה והברורה ביותר עבוכם להגדיר חיווי לשדות \ טפסים. זכרו שאין דרך אחת מקובלת. זה נתון לבחירתכם ולאופי הטופס שעליו אתם עובדים. אנחנו משתדלים להציג מספר דרכים ואפשרויות לנוחיותכם. בהצלחה ונתראה בשיעור הבא האחרון של מיני קורס זה 🐱‍🐉

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

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

אודות המחבר

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


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

השארת תגובה

ביטול

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