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

איך לבנות Directive באנגולר

עידן יצחקי 9 ביולי 2021 אין תגובות

נתחיל במה זה Directive

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

directive יכול לשנות צבע של תגית והוא יכול לשנות את מבנה ה-DOM, הכל בהתאם למה שאנחנו רוצים.

אנחנו משתמשים בהם די הרבה בפרויקט אנגולר כמו: ngFor, ngIf, ngClass ……

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

כמובן לא לבחור ב-ng , זה שמור לאנגולר ויכול לגרום להתנגשות.

אם החלטנו לעשות IF חדש, אז אנחנו יכולים לקרוא לו my-if ולא ng-if.

כמובן שדיירקטיב יכול לקבל ולהוציא מידע בדיוק כמו רכיב ומיד אראה איך.

בדוגמה אראה איך לעשות tooltip בעזרת directive

import { ContentChild, Directive, ElementRef, HostListener, Input, Output, Renderer2, TemplateRef, ViewContainerRef, EventEmitter } from '@angular/core';

@Directive({
  selector: '[appTooltip]'
})
export class TooltipDirective {
  @Output() isWorking: EventEmitter<boolean> = new EventEmitter<boolean>();
  constructor(
    private renderer: Renderer2,
    private elementRef: ElementRef,
    private viewContainerRef: ViewContainerRef) { }
  @ContentChild("tooltip") private tooltipTemplateRef: TemplateRef<Object>;
  @HostListener('mouseenter') onMouseEnter(): void {
    this.showTooltip();
  }
  @HostListener('focus') onFocus(): void {
    this.showTooltip();
  }
  @HostListener('mouseleave') onMouseLeave(): void {
    this.hideTooltip();
  }
  @HostListener('blur') onBlur(): void {
    this.hideTooltip();
  }

  showTooltip() {
    const view = this.viewContainerRef.createEmbeddedView(this.tooltipTemplateRef);
    view.rootNodes.forEach(node =>
      this.renderer.appendChild(this.elementRef.nativeElement, node));
    this.isWorking.emit(true);
  }
  hideTooltip() {
    if (this.viewContainerRef) {
      this.viewContainerRef.clear();
    }
    this.isWorking.emit(false);
  }
}

 

בקצרה:

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

מבוצע חיפוש בתוך אותו רכיב לתגית שיש לה את המאפיין tooltip וביצוע של השמה או מחיקה של הרכיב הזה מה-DOM.

התנאים שאנחנו מפעילים לביצוע הפעולה הם :

  1. עכבר נכנס
  2. עכבר יוצר
  3. הרכיב מקבל פוקוס
  4. הרכיב מאבד פוקוס

כאשר הפונקציות מופעלות, הדיירקטיב מוציא מידע לרכיב העוטף של true או false .

את העיצוב של ה-tooltip שמתי ב-style.css הכללי של הפרויקט כדי להשפיע עליו אותו דבר בכל מקום בפרויקט שלנו.

[appTooltip] {
    position: relative;
  }
  .tooltip {
    position: absolute;
    bottom: 100%;
    left: 0;
    padding: 10px;
    background: #fff;
    box-shadow: 0 2px 1px rgba(0,0,0,.6);
  }

עכשיו נעבור לראות איך זה נראה ברכיב עצמו

<div appTooltip (isWorking)="onTooltip($event)" tabindex="0">
    <p [ngClass]="{'toolTipOn':tooltipShow}">first-component works!</p>
    <ng-template #tooltip>
        <div class="tooltip">
            <span>HI I AM TOOLTIP</span>
        </div>
    </ng-template>
</div>
.toolTipOn {
    background-color: aquamarine;
    font-weight: bold;
}
export class FirstComponentComponent implements OnInit {
  public tooltipShow: boolean;
  constructor() { }
  ngOnInit(): void {
  }
  onTooltip(event) {
    this.tooltipShow = event;
  }
}

כפי שאפשר לראות, לקחנו DIV רגיל והוספנו לו את הדיירקטיב appTooltip ולכן יכלנו גם להוסיף את ה-OUTPUT שלנו למרות של-DIV אין מאפיין כזה.

יצרנו משתנה tooltipShow ופונקציה onTooltip שמקבלת את ה-EMIT ומיישמת אותו על המשתנה. זה גורם ל-NGCLASS להגיב ולהוסיף או למחוק CSS CLASS בשם tooltipOn.

הגדרנו ב-CSS של הרכיב, פרמטרים של צבע רקע והדגשה של הטקסט.

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

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

מיניון מחזיק בננהangular input and output in the same variable סופר מחלףריבוי מודולים באנגולר תמונת אווירה של אנמצית קוביות צבעוניותמדריך אנימציות באנגולר תמונת אווירה של אותיות צבעוניותSEO| שינוי כותרת של הדף באנגולר
אנגולר

אודות המחבר

עידן יצחקי להציג את כל הפוסטים של עידן יצחקי


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

השארת תגובה

ביטול

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

כלי נגישות

  • הגדל טקסטהגדל טקסט
  • הקטן טקסטהקטן טקסט
  • גווני אפורגווני אפור
  • ניגודיות גבוההניגודיות גבוהה
  • ניגודיות הפוכהניגודיות הפוכה
  • רקע בהיררקע בהיר
  • הדגשת קישוריםהדגשת קישורים
  • פונט קריאפונט קריא
  • איפוס איפוס