眾里尋她千百度,angular directives竟然如此簡單?是個人都能懂!

?

眾里尋她千百度,angular directives竟然如此簡單?是個人都能懂!

大家好,這一期呢,我們來談一下angular directives。

在angular的環境中呢,有兩種directives, 一種是內置的,另外一種是自定義的。

內置的directives有*ngFor, *ngIf, ngSwitch, ngClass等等。

相信你如果在用Angular的話,對以上這些都很熟悉了。

我們重點來說一下自定義的directives。

我們要創建一個directives,我們直接用Angular的命令,像這樣ng g directive jetding。這個命令會添加一個directive文件,一個單元測試文件,然后并且把這個directive加到module里面。

在module里面就是添加一個聲明。當然你如果不喜歡用命令行的話,你也可以自己手工添加。

Directive文件本身呢,它的selector有一個方括號[appJetDing], 前面有個APP的原因是為了避免與系統一級的directive發生沖突。

@Directive({selector:"[appJetDing]"})

export class JetDingDirective{

constructor(){}

}

當然目前這個directive是空的,不做什么事情,那我們就先搭一個框架,我們來設定這個directive已經準備好了,我們建一個div的tag,在div中使用這個directive。

<div>This is a test. </div>

<div appJetDing>This is a test. </div>

好,我們再回到我們自己的directive里面去。

這里面的第一要務就是要獲取HTML的元素。獲取的方法很簡單,就像下面的代碼。在構造函數中添加元素引用的定義。

@Directive({selector:"[appJetDing]"})

export class JetDingDirective{

constructor(private el: ElementRef){}

}

一旦獲取到這個元素的實例,你就可以對這個元素進行一些操作,比如說修改顏色,字體等等屬性。

el.nativeElement.style.backgroundColor="red"

可以修改這個元素的內容。

el.nativeElement.innerText = "haha " + el.nativeElement.innerText

這一期就說這些,希望對大家有所幫助。

這里是丁哥開講,歡迎關注一起學習討論,共同進步。

十年內計劃寫出超過三千六百篇文章,與超過三萬名讀者互動。

這些文章會在今日頭條,知乎,簡書,微博,微信公眾平臺,阿里大魚號,Medium等各大平臺同步上線,敬請期待關注,歡迎洽談合作相關事宜。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容