Angular開發小筆記

2022-07-04 05:18:12 字數 3294 閱讀 8350

一、父元件怎麼覆蓋子元件的樣式呢

1./deep/(不建議這麼做,以後angular會取消,因為這樣寫不利於元件的獨立性)

在父元件的scss裡面寫:

:host}
這樣就可以覆蓋掉子元件label的color了

2.host和host-context

在子元件的scss裡面寫:

:host(.自身加的class)}
或者

:host-context(父元件名)}
網上查到的定義:

二、unit test for service

有兩個方法,但是其實都是大同小異,都需要inject來生成例項,和mockbackend來模擬http返回data

方法一:注入要測試的service和mockbackend,並得到其實例

})//inject注入要測試的service和mockbackend(模擬http返回資料),後面注入function拿到對應例項

beforeeach(inject([testservice, mockbackend], (testservice, mockbackend) =>))

it('test a service', () =>

this.backend.connections.subscribe((connection) =>)));

});this.testservice.getdata('一些api需要的資料').subscribe((res) =>);

})})

方法二:自己重寫乙個http,mockdata傳到自己重寫的http上,前提是service呼叫了自己重寫的http方法

})//還是需要inject,才能在不呼叫component請款下建立service例項

beforeeach(inject([testservice], (testservice) =>))

it('test a service', () =>);

})})

三、面對沒有值的html屬性,怎麼辦?

例如input的disabled,video和audio的autoplay、loop,ol的reversed.....

這些屬性都是只要存在於標籤上就會有所影響:

例如:

<

video

autoplay src

="1.mp4"

>

video

>

<

video

autoplay

="false"

src="1.mp4"

>

video

>

大致有2個方法:

方法1:中括號輸入法

<

video

[autoplay]

="false"

src="1.mp4"

>

video

>

把autoplay用中括號包住,如果是false,angular就會自動把它去除掉,編譯出來就變成

<

video

src="1.mp4"

>

video

>

方法2:中括號attr輸入法

<

video

[attr.autoplay]

="true"

src="1.mp4"

>

video

>

<

video

[attr.autoplay]

="null"

src="1.mp4"

>

video

>

attr.屬性和中括號輸入法差不多,不同的是false的時候不能輸入false,因為attr.屬性會把輸入的值原封不動地輸入去,編譯成下面這樣:

<

video

autoplay

="false"

src="1.mp4"

>

video

>

而輸入null則可以實現和括號輸入法輸入false時一樣的效果。

四、常用的angular內建的指令

指令例子

ngif

*ngif="true"

ngfor

*ngfor="let btn of btns"

ngclass

[ngclass]=""

ngmodel

[(ngmodel)] = "person.name"

ngmodelchange

(ngmodelchange)="onchange($event)"

ngsubmit

(ngsubmit) = "onsubmit($event)"

在angular裡面html時間都是以小括號括住實現的,例如(click)="onclick($event)",注意這裡$event是不能亂改的,angular會自動識別並且注入對應的東西

在這裡就會有乙個疑問,就是(change)="change($event)"和(ngmodelchange)="change($event)"的區別是什麼呢?

(change)="change($event)" 是每次input完失去焦點才會觸發,$event傳回來的是乙個物件:(target和srcelement就是觸發事件的物件)

(ngmodelchange)="change($event)",就是每輸入乙個字元就會觸發一次,$event返回的是這個元素繫結的ngmodel

(ngsubmit)="onsubmit($event)"只會在提交表單時候觸發,$event傳回來的是乙個物件和(change)返回的差不多的物件

Angular開發準備

angualr 是一款來自谷歌的開源的 web 前端框架,誕生於 2009 年,是一款優秀的前端 js 框架,已經被用於 google 的多款產品當 中。根據專案數統計 angular 1.x 2.x 4.x 5.x 6.x 7.x 是現在網上使用量最大的框 架。angualr 基於 typescr...

angular元件開發

專案中經常會有一些公共元件,比如header,如果每個頁面都寫一遍的話顯得很冗餘,而且不利於維護,這時候我們就會考慮將這些公共部分抽取出來,做成乙個單獨的元件。然而angular不是很熟悉啊 怎麼啵 折騰了一下,才發現angular的元件開發主要依賴自定義指令 directive 來實現。主要使用到...

Angular學習筆記 Angular生命週期

生命週期函式通俗的講就是元件建立 元件更新 元件銷毀的時候會觸發的一系列的方法。當 angular 使用建構函式新建乙個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法。當 angular 使用建構函式新建乙個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法 鉤子用途...