日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Angular教程:Angular屬性型指令

屬性型指令

使用屬性型指令,可以更改 DOM 元素和 Angular 組件的外觀或行為。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、文山州網(wǎng)站維護、網(wǎng)站推廣。

有關(guān)包含本指南中代碼片段的有效示例,請參見現(xiàn)場演練 / 下載范例

建立屬性型指令

本節(jié)將引導(dǎo)你創(chuàng)建“突出顯示”指令,該指令會將宿主元素的背景色設(shè)置為黃色。

  1. 要創(chuàng)建指令,請使用 CLI 命令 ?ng generate directive?。
  2. ng generate directive highlight

    CLI 創(chuàng)建 ?src/app/highlight.directive.ts? 以及相應(yīng)的測試文件 ?src/app/highlight.directive.spec.ts?,并在 ?AppModule ?中聲明此指令類。

    CLI 生成默認的 ?src/app/highlight.directive.ts?,如下所示:

    import { Directive } from '@angular/core';
    
    @Directive({
      selector: '[appHighlight]'
    })
    export class HighlightDirective {
      constructor() { }
    }

    ?@Directive()? 裝飾器的配置屬性會指定指令的 CSS 屬性選擇器 ?[appHighlight]?。

  3. 從 ?@angular/core? 導(dǎo)入 ?ElementRef?。?ElementRef ?的 ?nativeElement ?屬性會提供對宿主 DOM 元素的直接訪問權(quán)限。
  4. 在指令的 ?constructor()? 中添加 ?ElementRef ?以注入對宿主 DOM 元素的引用,該元素就是 ?appHighlight ?的作用目標(biāo)。
  5. 向 ?HighlightDirective ?類中添加邏輯,將背景設(shè)置為黃色
  6. import { Directive, ElementRef } from '@angular/core';
    
    @Directive({
      selector: '[appHighlight]'
    })
    export class HighlightDirective {
        constructor(el: ElementRef) {
           el.nativeElement.style.backgroundColor = 'yellow';
        }
    }

指令不支持名稱空間。

This is invalid

應(yīng)用屬性型指令

  1. 要使用 ?HighlightDirective?,請將 ?

    ? 元素添加到 HTML 模板中,并以偽指令作為屬性。

  2. Highlight me!

Angualr 會創(chuàng)建 ?HighlightDirective ?類的實例,并將 ?

? 元素的引用注入到該指令的構(gòu)造函數(shù)中,它會將 ?

? 元素的背景樣式設(shè)置為黃色。

處理用戶事件

本節(jié)會展示如何檢測用戶何時將鼠標(biāo)移入或移出元素以及如何通過設(shè)置或清除突出顯示顏色來進行響應(yīng)。

  1. 從 '@angular/core' 導(dǎo)入 ?HostListener?
  2. import { Directive, ElementRef, HostListener } from '@angular/core';
  3. 添加兩個事件處理程序,它們會在鼠標(biāo)進入或離開時做出響應(yīng),每個事件處理程序都帶有 ?@HostListener()? 裝飾器。
  4. @HostListener('mouseenter') onMouseEnter() {
      this.highlight('yellow');
    }
    
    @HostListener('mouseleave') onMouseLeave() {
      this.highlight('');
    }
    
    private highlight(color: string) {
      this.el.nativeElement.style.backgroundColor = color;
    }

    要訂閱本屬性型指令宿主 DOM 元素上的事件(在本例中是 ?

    ?),可以使用 ?@HostListener()? 裝飾器。

    處理程序會委托給一個輔助方法 ?highlight()?,該方法會設(shè)置宿主 DOM 元素 ?el ?的顏色。

完整的指令如下:

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective {

  constructor(private el: ElementRef) { }

  @HostListener('mouseenter') onMouseEnter() {
    this.highlight('yellow');
  }

  @HostListener('mouseleave') onMouseLeave() {
    this.highlight('');
  }

  private highlight(color: string) {
    this.el.nativeElement.style.backgroundColor = color;
  }

}

當(dāng)指針懸停在 p 元素上時,背景顏色就會出現(xiàn);而當(dāng)指針移出時,背景顏色就會消失。

將值傳遞給屬性型指令

本節(jié)將引導(dǎo)你在應(yīng)用 ?HighlightDirective ?時設(shè)置突出顯示顏色。

  1. 在 ?highlight.directive.ts? 中,從 ?@angular/core? 導(dǎo)入 ?Input?。
  2. import { Directive, ElementRef, HostListener, Input } from '@angular/core';
  3. 添加一個 ?appHighlight ?的 ?@Input()? 屬性。
  4. @Input() appHighlight = '';

    ?@Input()? 裝飾器會將元數(shù)據(jù)添加到此類,以便讓該指令的 ?appHighlight ?屬性可用于綁定。

  5. 在 ?app.component.ts?,將 ?color ?屬性添加到 ?AppComponent?。
  6. export class AppComponent {
      color = 'yellow';
    }
  7. 要同時應(yīng)用指令和顏色,請通過 ?appHighlight ?指令選擇器使用屬性綁定,將其設(shè)置為 ?color?。
  8. Highlight me!

    ?[appHighlight]? 屬性綁定執(zhí)行兩項任務(wù):

    • 將突出顯示指令應(yīng)用于 ?

      ? 元素

    • 通過屬性綁定設(shè)置指令的突出顯示顏色

通過用戶輸入來設(shè)置值

本節(jié)指導(dǎo)你添加單選按鈕,將你選擇的顏色綁定到 ?appHighlight ?指令。

  1. 將標(biāo)記添加到 ?app.component.html? 以選擇顏色,如下所示:
  2. My First Attribute Directive

    Pick a highlight color

    Green Yellow Cyan

    Highlight me!

  3. 修改 ?AppComponent.color?,使其沒有初始值。
  4. export class AppComponent {
      color = '';
    }
  5. 啟動本應(yīng)用的開發(fā)服務(wù)器,以驗證用戶可以通過單選按鈕選擇顏色。

綁定到第二個屬性

本節(jié)將指導(dǎo)你配置應(yīng)用程序,以便開發(fā)人員可以設(shè)置默認顏色。

  1. 將第二個 ?Input()? 屬性 ?defaultColor ?添加到 ?HighlightDirective?。
  2. @Input() defaultColor = '';
  3. 修改指令的 ?onMouseEnter?,使其首先嘗試使用 ?highlightColor ?進行突出顯示,然后嘗試 ?defaultColor?,如果兩個屬性都 ?undefined?,則變回 ?red?。
  4. @HostListener('mouseenter') onMouseEnter() {
      this.highlight(this.highlightColor || this.defaultColor || 'red');
    }
  5. 若要綁定到 ?AppComponent.color? 并回退為默認顏色“紫羅蘭(violet)”,請?zhí)砑右韵?nbsp;HTML。在這里,?defaultColor ?綁定沒有使用方括號 ?[]?,因為它是靜態(tài)的。
  6. Highlight me too!

    與組件一樣,你可以將指令的多個屬性綁定添加到宿主元素上。

如果沒有默認顏色(defaultColor)綁定,則默認為紅色。當(dāng)用戶選擇一種顏色時,所選的顏色將成為突出顯示的顏色。

通過 NgNonBindable 停用 Angular 處理過程

要防止在瀏覽器中進行表達式求值,請將 ?ngNonBindable ?添加到宿主元素。?ngNonBindable ?會停用模板中的插值、指令和綁定。

在下面的示例中,表達式 ?{{ 1 + 1 }}? 的渲染方式會和在代碼編輯器的一樣,而不會顯示 ?2?。

Use ngNonBindable to stop evaluation.

This should not evaluate: {{ 1 + 1 }}

將 ?ngNonBindable ?應(yīng)用于元素將停止對該元素的子元素的綁定。但是,?ngNonBindable ?仍然允許指令在應(yīng)用 ?ngNonBindable ?的元素上工作。在以下示例中,?appHighlight ?指令仍處于活躍狀態(tài),但 Angular 不會對表達式 ?{{ 1 + 1 }}? 求值。

ngNonBindable with a directive

This should not evaluate: {{ 1 +1 }}, but will highlight yellow.

如果將 ?ngNonBindable ?應(yīng)用于父元素,則 Angular 會禁用該元素的子元素的任何插值和綁定,例如屬性綁定或事件綁定。


文章題目:創(chuàng)新互聯(lián)Angular教程:Angular屬性型指令
URL標(biāo)題:http://www.5511xx.com/article/djhjscc.html