מה המשמעות של המונח קומפוננט ב- אנגולר ?
המונח קומפוננט ( component ) באנגולר – משמעותו היא "פיסה של ממשק משתמש (UI) "
כלומר חתיכת מסך .
קומפוננט מורכב מקובץ קלאס ts , מחלקה יעודית שמטפלת בקומפוננט, ולרוב (אך לא מחייב) יהיה גם קובץ html, שמשמש בתור התבנית של הקומפוננט.
יכולים להיות עוד קבצים כמו CSS וכדומה.
דוגמאות מציאותיות לקומפוננט – נניח באתר רגיל, יכולים להיות : קומפוננט של סרגל ניווט, קומפוננט של ההדר (הכותרת) , של הפוטר (הכותרת התחתית) , וקומפוננט של התוכן, וכן הלאה..
קומפוננט כמובן מכיל את המתודות הרלוונטיות אליו בקלאס שלו. למשל מתודות שמגיבות לאירועי קליק, או לשינוי תוכן בקומפוננט וכדומה.
מבנה טיפוסי לדוגמא של קומפוננט באנגולר
---------------------------------
in bubu.component.ts file
---------------------------------
import { Component } from '@angular/core';
@Component({
selector: 'bubu',
template: `<h1> Heyyyyyy!!!!`
})
export class BubuComponent {
name = 'Bubu';
}
-----------------
In another file
-----------------
<body>
<bubu></bubu>
</body>
בתחילת הקובץ, אנחנו מייבאים את הרכיב המתאים מליבת אנגולר.
אחרי כן, אנחנו כותבים את הפקודה @Component , שמגדירה כמה דברים בסיסים.
באופן כללי, כל פעם שתראו באנגולר ביטוי שמתחיל בסימן @ , זה נקרא "Decorator", והמשמעות היא רכיב מסוים של אנגולר שמביא עימו תכונות מסויימות.
בתור ה-Decorator שנקרא @Component , הגדרנו 2 דברים :
- את ה-selector שישמש אותנו לאחר מכן בקובץ ה-html, שימו לב שה-selector שקראתי לו בשם החדשני bubu, הופך להיות בקובץ ה-html שמופיע בתחתית – בתור תגית html, שאנגולר יודע לפרש אותה.
- בתוך ההגדרה template- הגדרנו מה יופיע בקומפוננט הזה.
אילו נגדיר זאת עם גרשיים מיוחדים כאלו ", אז זה יאפשר לכתוב מספר שורות יחד.
לעומת זאת עם גרש רגיל, זה לא יאפשר.
בנפרד , הגדרנו למטה את הקלאס עצמו, בצורה הרגילה שבה עובדים עם קלאסים ב-node js, כלומר פותחים במילה export עם שם הקלאס, ושמים בתוכו את כל המתודות והמאפיינים ליצוא.
בתחתית – כתבתי שבקובץ אחר, לרוב בקובץ html כלשהוא – נשים את הסלקטור שבחרנו בו, וזה יגרום לכך שתוכן הקומפוננט יופיע.
מחזור החיים של קומפוננט באנגולר
באנגולר אפשר להגיב לכל מיני אירועים שמתרחשים לאורך "חיי" הקומפוננט.
אחד מהם, נפוץ מאוד, הוא האירוע שמתרחש כאשר הקומפוננט נטען לראשונה , מה שנקרא init (=יצירת מופע של אובייקט הקומפוננט).
לצורך זה נשתמש במתודה ngOnInit() בתוך הקלאס של הקומפוננט.
2 דרכים ליצור קומפוננט עם אנגולר
- פשוט ליצור את הקבצים, בתוך תיקיית src, עדיף שיהיו מרוכזים יחד בתיקיה יעודית לקומפוננט, ומרוכזים תחת תיקיה שתיקרא components.
למשל הקומפונננט שנקרא bubu , ישב בתוך src/components/bubu.
במקרה שאנחנו יוצרים ידנית את הקבצים, נצטרך לכל הפחות ליצור קובץ ts
ולרוב גם קבצי html+css
אז בסוף התהליך נהיה עם :
bubu.component.ts
bubu.html
bubu.css
- אפשר להשתמש פשוט בכלי שורת הפקודה angular cli, ולהקליד
ng g component components/bubu
האות g משמעותה "תיצור" (=המילה generate ) .
המילה component – אומרת לכלי מה ליצור (אפשר ליצור עוד דברים חוץ מקומפוננטות).
ובסוף אנחנו רושמים באיזו תיקיה ליצור את הקומפוננט, והכלי יצור את הספריה בעצמו.
בסופו של דבר צריך להוסיף את הקומפוננט אל @ngModule, ועל כך בפוסט נפרד.