PracticU

Angular 4 - Filter and Pipe

בלי כתוביותעם כתוביות
PracticU › קורס אנגולר 4 עם Angular - WebAPI › Angular 4 - Filter and Pipe
מילון מושגים:
Angular - מסגרת פיתוח של גוגל לבניית יישומי אינטרנט מתקדמים בצד הלקוח, מבוססת TypeScript ורכיבים.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
תבנית - מבנה בסיסי מוכן שממנו יוצרים פריטים דומים, כמו תבנית עמוד או תבנית מסמך.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.

Angular 4 - Filter and Pipe
ההרצאה מציגה חיפוש ברשימת המוצרים בשתי דרכים: הדרך הקלאסית בעזרת מערך עזר, ואחריה פייפ מותאם אישית שנקרא מתוך התבנית.
הדרך הקלאסית
1. שדה חיפוש: שדה טקסט עם placeholder שמקשר את הערך למשתנה searchValue, ומפעיל פונקציית חיפוש בכל הקלדה.
2. מערך עזר: הפונקציה מאתחלת מערך filteredProducts חדש, עוברת על המוצרים המקוריים, ומוסיפה כל מוצר ששמו מכיל את מחרוזת החיפוש.
3. הגנה: לפני הלולאה בודקים שהמוצרים קיימים, כדי שחיפוש לפני הגעת הנתונים לא יגרום לשגיאה.
4. אותיות: כדי להתעלם מאותיות גדולות וקטנות משתמשים ב-toLowerCase על שני הצדדים של ההשוואה.
פייפ חיפוש
1. הפייפ: נוצר קובץ product filter pipe עם מחלקה שפונקציית transform שלה מקבלת את המוצרים ואת מחרוזת החיפוש, ומחזירה מערך מסונן.
2. שימוש בתבנית: בתבנית מעבירים את המוצרים דרך הצינור, ומעבירים לו את searchValue כפרמטר. כך אין צורך במערך עזר בקומפוננטה.
3. החזרה תמיד: אם אין מחרוזת חיפוש או אין מוצרים, הפייפ מחזיר את כל הרשימה. אחרת הוא מחזיר רק את המוצרים המתאימים.
4. פייפים מובנים: Angular מציע פייפים מוכנים, כמו currency, שמקבל פרמטרים לסימן המטבע ולמספר הספרות אחרי הנקודה.
דיבאגינג
בדיבאגר נמצא שהערך searchValue לא הגיע לפונקציה, ולכן היא החזירה את הרשימה המלאה. התיקון נעשה בתוך הפייפ, והחיפוש עובד גם באותיות קטנות.
סיכום
בסיום ההרצאה החיפוש מופעל מתוך הצינור, והמערך המקורי נשאר ללא שינוי בקומפוננטה. ההרצאה הבאה תוסיף פייפ מיון לאותה רשימה.
השיעור הבא בקורס: Angular 4 - Sort Pipe

פרקי ההרצאה: Angular 4 - Filter and Pipe

  1. 00:00

    חיפוש ומיון: הדרך הקלאסית

  2. 00:59

    תיבת חיפוש ופונקציית search

  3. 02:16

    לולאה על רשימת המוצרים המסוננת

  4. 03:09

    בדיקת התאמה עם includes

  5. 05:08

    למה עדיף Pipe על פתרון ידני

  6. 05:44

    חיפוש ללא תלות באותיות גדולות

  7. 06:39

    Pipe: פונקציה שמשנה את הערך

  8. 08:06

    פייפים מוכנים ואיך משתמשים בהם

תמלול ההרצאה: Angular 4 - Filter and Pipe

הטקסט המלא של הדקות הראשונות בהרצאה «Angular 4 - Filter and Pipe» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם בהרצאה הזאת אנחנו רוצים ללמוד על מיון וחיפוש איך לעשות לדוגמה שיחפש לי צ'אי בלבד או צ'אנג או לא יודע מה יש לו שמה לעשות חיפוש כאן ואיך לעשות מיון לדוגמה מחיר 26 אני אומר לו לא תראה לי את המחיר הכי גבוה ועוד פעם תראה לי את המחיר הכי נמוך 7 דולר איך לעשות לו את המיון לפי מחיר ומיון לפי שם אתם רואים משהו שמתחיל ב-Z משהו שמתחיל

  2. 00:31

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

  3. 00:47

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

  4. 01:11

    תיבת search ונעשה פונקציה שמפלטרת אז אנחנו הולכים לקומפוננטה ל-HTML ומוסיפים פה בהדר במקום product list איפה שהכותרת העליונה ה-header זה זה כן זה ה-header פה אנחנו מוסיפים את הריבוע הזה של טקסט בוקס בואו נוסיף אותו במקום product list נוסיף פה input type text או search אפילו שנייה search name search text box value אין

  5. 01:35

    לו שום value שאנחנו מכניסים לו ונעשה place holder שווה search בשלוש נקודות נכון כשאני מוחק פה הכל זה search בשלוש נקודות ונגיד לו שכשמישהו מכניס פה ערך תחבר אותו למשתנה הזה שעשינו וכשקורא input גם תפעיל לי את הפונקציה של search בוא נעשה גם פונקציה של search search function שמקבלת את המוצר שמחפשים אז זה מה שאני עושה

  6. 02:01

    למעשה אני פה אומר לאנגולר כל מה שמכניסים לך תכניס לי למשתנה filter search ואיך שמשהו נכנס תפעיל לי גם את הפונקציה של search function בוא נעשה עכשיו פונקציה של search function זאת השיטה הקלאסית לעשות את זה עם משתנה עזר ואז להגיד לו פה ברשימה של for איפה שהוא רץ על כל המוצרים פה איפה שהוא רץ על כל המוצרים ברשימת for הזאת לא ערוץ על כל הפרודקטס

  7. 02:26

    אלא על הרשימה של פילטרד פרודקטס שירוץ על הרשימה של פילטרד פרודקטס במילים אחרות אנחנו לוקחים פילטרד פרודקטס משייכים לו את הפרודקטס הרגיל ואומרים ללולאת for לרוץ על הפילטרד פרודקטס כאשר הפרודקטס הרגיל נשאר מקורי וכל פעם שיש לי פה פילטרד פרודקטס אני אעשה דבר כזה אני אצור מערך חדש new search value בוא נקרא לזה search value מסוג סטרינג ונעשה כזה דבר

  8. 02:53

    ש-filtered-products שווה ל-new array של פרודקטס עשינו לו מערך חדש גם כאן צריך ב-default ישר לתת לו איזשהו מערך חדש אז אנחנו יוצרים פה מערך חדש משייכים לו איזשהו ערך שיגיע מהשרת כשמישהו מכניס לי משהו ב-search אני יוצר מערך חדש ומתחיל לדחוף לתוכו ערכים מתוך פרודקטס המקורי this.products.foreach

  9. 03:16

    תעבור לי על כל הערכים שיש לך בפרודקטס תיקח משהו ותבדוק אם הפרודקטס קונטיינס product name נקודה קונטיינס סליחה בואו נעשה את זה ככה האם הפרודקט נקודה product name includes יש פה הרבה פונקציות אפשר לעשות גם index of אפשר לעשות includes גם index of היה מתאים לי למצוא איזשהו סטרינג גם includes מחזיר לי true false

  10. 03:40

    האם הפרודקט name includes ובסוגריים מה הוא כולל search value ואם הוא כולל search value אני יכול לעשות פה מוקצה שאם product כולל את מה שאנחנו מחפשים אז תעשה this.filteredproducts.push ותדחוף את המוצר הנוכחי למסוננים אוקיי זה אם הוא כולל אז אני אומר ככה אם product כולל את ה-search value תדחוף אותו לרשימת המסוננים ואז יהיה לי רק את מה שאנשים

  11. 04:10

    מחפשים שזה מצוין בוא נבדוק שזה עובד רק לפני כן אני רוצה עוד לבדוק שה-this.products הוא לא ריק למה יכול להיות שהוא יופעל עוד לפני שיגיע מידע מהשרת if this.products בכלל קיים הוא לא undefined and this.products.length גדול מ-0 אז הכל בסדר אלס לא צריך את אלס אוקיי אז אני בודק שהוא קיים ומחזיר בחזרה את ה...

  12. 04:18

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

  13. 04:53

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

  14. 05:20

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

  15. 05:30

    פילטרד פרודקטס? אה, אני לא נכון, אני לא צריך פילטרד פרודקטס. אני צריך פה לשייך search value. אני צריך search value string.

  16. 05:40

    אני משייך search value והsearch function מוציאה לי את ה-filtered. בואו נראה, אה, זה כבר הרבה יותר טוב, בואו נעשה צ'אי, יפה, ואם אני כותב אותיות קטנות, הוא מתעלם, אתם רואים, הוא מתעלם מאותיות קטנות, שזה לא משהו שהייתי רוצה, אז אני אעשה פה product name.to-lower, וגם ב-search value אני אעשה to-lower, ועכשיו זה, קודם כל אקח את הפרודקט, אעשה

  17. 06:05

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

  18. 06:19

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

  19. 06:41

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

  20. 07:00

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

  21. 07:14

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

  22. 07:34

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

  23. 07:59

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

  24. 08:14

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

  25. 08:37

    לבנות אותה לבד אפשר לעשות custom pipes ולבנות אותם לבד ומאחורי הקלעים זאת פונקציה רגילה שמקבלת משהו ומחזירה משהו וזה מה שאנחנו הולכים לעשות אני רק רוצה להראות לכם איזשהו pipe מוכן יש פה עוד משהו שנקרא pure, pure זה אומר שהpipe הזה עוקב אחרי השינויים אבל לא בתוך האובייקט אלא רק על הרפרנס לאובייקט על זה נדבר בהמשך

  26. 09:00

    ובואו נמצא פה pipe ואנחנו רואים פה שיש פה כמה פייפים מוכנים uppercase, בעצם ה-currency, מטבע, אז תאריך, יש פה כמה פייפים מוכנים, אבל בואו נעשה אחד משלנו, שבואו נשתמש ב-currency קודם כל. בואו נשתמש ב-currency, ואחרי שנשתמש

  27. 09:22

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

  28. 09:40

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

  29. 09:52

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

  30. 10:06

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

  31. 10:39

    של דולר כתוב מטבע usd. אם אני מחזיר את זה לפולסה ושם פה 0 או רק נקודה, אז הוא יעשה 18, 19 או כמה שיש לו.

לקורס המלא: קורס אנגולר 4 אונליין עם WebAPI

ההרצאה הקודמת: Angular 4 - Toastr JS

ההרצאה הבאה: Angular 4 - Sort Pipe

הרצאות קשורות מקורסים אחרים

  • map & filter
  • יצירת Pass-Through Filter
  • פקודת Get-WinEvent - חלק 4 - Filter

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React