Angular2 父元件中修改子元件樣式

2021-08-29 18:18:49 字數 1238 閱讀 4911

情景:父元件fathercomponent中使用了子元件childcomponent,父元件有自己的css檔案,子元件也有自己的css檔案,在父元件中修改了子元件的樣式,但不起作用。

檢視html元素的樣式表,發現 定義的樣式後面都加了個 _ngcontent-c#,這是angular為了區分自己的樣式,特意加的標記。

使用特殊選擇器:元件樣式中有一些從影子 dom 樣式範圍 (shadow dom style scoping) 領域引入的特殊選擇器:

:defined:匹配任何已定義的元素,包括內建元素和定義的自定義元素customelementregistry.define()。

:host:選擇包含其內部使用的css 的shadow dom的影子主機。

:host():選擇包含其內部使用的css 的陰影dom的陰影主機(因此您可以從其陰影dom中選擇自定義元素) - 但僅當作為函式引數給出的選擇器與陰影主機匹配時。

:host-context():選擇包含其內部使用的css 的影子dom的影子主機(因此您可以從其影子dom中選擇乙個自定義元素) - 但僅當作為函式引數給出的選擇器與影子主機的祖先匹配時它位於dom層次結構中的位置。

/***fathercomponent.html***/

/***childcomponent.html***/

showchildname

/***childcomponent.css***/

.child-name

/***fathercomponent.css***/

.father .child-name

這個時候渲染出的showchildname的樣式:pink & 12px;

/***childcomponent.css***/

.child-name

:host-context(.father) .child-name

/***fathercomponent.css***/

不寫樣式

這個時候渲染出的showchildname的樣式:red & 16px;

/***childcomponent.css***/

.child-name

/***fathercomponent.css***/

:host

這個時候渲染出的showchildname的樣式:red & 16px;

angular2新建元件

1,使用 ng g c hello 建立乙個新的元件 它建立了4個檔案,並更新了 如果想訪問這個元件,只需要新增它的路由 成功訪問這個元件 import語句定義了我們需要用到的哪些模組,import 語句的結構 import from wherever.這種寫法叫解構。解構是 es6和 typesc...

Angular2如何修改父子元件樣式

場景 需要根據實際專案需求,修改引入的第三方元件的部分樣式 修改父元件的元素的樣式 一 修改父元件的元素的樣式 host host偽類,這是在元件內部獲取到其宿主元素的唯一方式,會向上一直查詢到根元素body 具體使用方法 預設當前在乙個元件中,該元件位於乙個父元件中,且該元件引入了第三方子元件 以...

angular 父元件和子元件

export class childcomponent implements oninit ngoninit greeting name string 按鈕呼叫child2的greeting方法 viewchild child1 child1 childcomponent ngoninit void...