我想問一點小小的問題,讓我的大腦開箱即用。如何動態設置Angular 2+組件的複雜CSS?
語境
角4使用角CLI和AOT。
https://angular.io/docs/ts/latest/guide/component-styles.html中提到的所有方法都描述了在開發人員編寫組件時設置複雜CSS的方法。
組件創建後,角允許調整個人風格,甚至在組件,請你,所有使用[ngClass]
,<div [class.something]="condition">
,各種@HostBinding
裝飾和一些其他的方法指定不同的CSS類的標籤名稱。
但是,以上都不能更改組件正在使用的CSS聲明。上述方法可以(a)使用開發人員定義的樣式表中已有的內容,或者(b)將單獨的CSS屬性設置爲組件模板中的單個HTML標籤。
問題
我將如何更新運行時整個組件的CSS,以便在該組件響應所有元素到新的CSS?
假設我爲div.someClass引入了一種新風格,並且我希望所有匹配元素div.someClass能夠反映新風格。
Plunker
我嘗試的展示是在這裏:https://plnkr.co/edit/N2C40cSb7hd1AyOxWWdT
的按鈕應該是紅色的基礎上,MyChildComponent.styles
我想我明白爲什麼它不工作的價值我期望的方式:簡而言之,樣式是在編譯期間在組件中構建的,而不是運行時,包括在模板中<style />
標籤內發現的樣式。
但知道它爲什麼不起作用並不能幫助我使它工作。
任何幫助高度讚賞。
謝謝您的回覆。不幸的是,它證實了我害怕的東西。我將不得不將樣式分配給我想要修改的所有按鈕。我希望在我的用例中將自定義樣式應用於數百個HTML標記(例如,列出數百個縮略圖圖像時,希望更改其邊框的CSS)。以這種方式分配樣式很可能會影響性能。但我會測試這種方法。 –
@JanKlan您可以將css類應用於其組件中的按鈕,而不是通過@Input()傳遞它。爲此尋找ngClass。可以移動你的CSS嗎? – brijmcq
這沒有幫助,因爲我的目標是在創建組件後更改CSS類定義,而不是爲元素分配動態類名 - 當然,這很好。看起來我運氣不好。 –