עזרה ממי שמבין קצת באנגולר

babarbara

משתמש פעיל
הנדסת תוכנה
יש לי מערך של עובדים שאני מציגה עם ngFor, ויש עליו pipe
ומשתנה בוליאני ב service שמקושר ל checkbox שמראה האם להציג את כל העובדים או רק מי שוותיק...
אני רוצה שכשאני ילחץ על ה checkbox הוא ילך ל pipe שוב ויציג לי את העובדים עם/בלי תנאי
למה הוא לא הולך לpipe כשהערך משתנה ב service?
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
הpipe ניגש ישירות לערך בservice או לערך בקומפוננטה?
 

babarbara

משתמש פעיל
הנדסת תוכנה
ב pipe הוא בודק את הערך ב service שמקושר ל checkbox
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
איך ערך בservice מקושר ישירות לcheckbox?
 

babarbara

משתמש פעיל
הנדסת תוכנה
אני מקבלת את המשתנה _service ב constructor
קוד:
constructor(private _service: xxxService){}

HTML:
 <input [(ngModel)]="_service.showAllWorker"  type="checkbox">
 

kidinet

משתמש מקצוען
את חייבת שה pipe ישתמש בערך
_service.showAllWorker
אחרת הוא לא ידע להתרנדר מחדש
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
זהו, שהוא מקושר למופע של הservice, ולא לservice בעצמו.
אין דרך לקשר ישירות.

הpipe ניגש גם למופע הזה?
 

babarbara

משתמש פעיל
הנדסת תוכנה
נכון,
ה pipe בודק מה הערך של המשתנה ב service ולפי מציג את המערך
הוא ניגש לערך!!
קוד:
constructor(private _service: xxxService) { }
filterArray: any[] = [];

transform(item: any[]): any {
  this.filterArray = [];
  for (let i = 0; i < item.length; i++) {
    if ( this._service.showAllWorker)
      this.filterArray.push(item[i]);
  }
  return this.filterArray;
}
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
אם ככה, זה צריך לעבוד.
הוא ניגש לpipe ובכל אופן מחזיר נתונים לא נכונים, או שהוא כלל לא ניגש?
 

babarbara

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

kidinet

משתמש מקצוען
במקום להשתמש התוך הpipe c
this._service.showAllWorker
אתצריכה לשלוח את המשתנה הזה כפרמטר לpipe
קוד:
constructor() { }
filterArray: any[] = [];

transform(item: any[], showAllWorker): any {
  this.filterArray = [];
  for (let i = 0; i < item.length; i++) {
    if ( showAllWorker)
      this.filterArray.push(item[i]);
  }
  return this.filterArray;
}
ובלולאה:
ngFor="let item of items|filterPipe:service.showAllWorker"
 

babarbara

משתמש פעיל
הנדסת תוכנה
תודה!!!!!
זה עובד!!
איך אפשר לשלוח כמה ערכים ל pipe?
 

babarbara

משתמש פעיל
הנדסת תוכנה
מה אני עושה כשיש לי פונקציה בקומפוננטה שמשנה ערך ב service וה pipe משתמש בערך הזה
איך אני גורמת לו להריץ את הpipe שוב?
תודה!
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קיט א'

א אַשְׁרֵי תְמִימֵי דָרֶךְ הַהֹלְכִים בְּתוֹרַת יְהוָה:ב אַשְׁרֵי נֹצְרֵי עֵדֹתָיו בְּכָל לֵב יִדְרְשׁוּהוּ:ג אַף לֹא פָעֲלוּ עַוְלָה בִּדְרָכָיו הָלָכוּ:ד אַתָּה צִוִּיתָה פִקֻּדֶיךָ לִשְׁמֹר מְאֹד:ה אַחֲלַי יִכֹּנוּ דְרָכָי לִשְׁמֹר חֻקֶּיךָ:ו אָז לֹא אֵבוֹשׁ בְּהַבִּיטִי אֶל כָּל מִצְוֹתֶיךָ:ז אוֹדְךָ בְּיֹשֶׁר לֵבָב בְּלָמְדִי מִשְׁפְּטֵי צִדְקֶךָ:ח אֶת חֻקֶּיךָ אֶשְׁמֹר אַל תַּעַזְבֵנִי עַד מְאֹד:
נקרא  30  פעמים

לוח מודעות

למעלה