一、父元件怎麼覆蓋子元件的樣式呢
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.....
這些屬性都是只要存在於標籤上就會有所影響:
例如:
<大致有2個方法:video
autoplay src
="1.mp4"
>
video
>
<
video
autoplay
="false"
src="1.mp4"
>
video
>
方法1:中括號輸入法
<把autoplay用中括號包住,如果是false,angular就會自動把它去除掉,編譯出來就變成video
[autoplay]
="false"
src="1.mp4"
>
video
>
<方法2:中括號attr輸入法video
src="1.mp4"
>
video
>
<attr.屬性和中括號輸入法差不多,不同的是false的時候不能輸入false,因為attr.屬性會把輸入的值原封不動地輸入去,編譯成下面這樣:video
[attr.autoplay]
="true"
src="1.mp4"
>
video
>
<
video
[attr.autoplay]
="null"
src="1.mp4"
>
video
>
<而輸入null則可以實現和括號輸入法輸入false時一樣的效果。video
autoplay
="false"
src="1.mp4"
>
video
>
四、常用的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 使用建構函式新建乙個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法 鉤子用途...