如果變量爲真(workspace.active
這裏)並且祖先元素具有類.home
,我想在div(組件的一部分)上設置類active
。 喜歡的東西:如何使用:在ngClass條件中的主機上下文選擇器?
<div [ngClass]="{'active': workspace.active && ':host-context(.home)', }">
我可以在ngClass這樣的條件表達式中使用某種方式這個僞選擇:host-context
?
詳情:
我想在兩個用例使用相同的組件。在這兩種情況下,只有一些CSS屬性應該是不同的。所以我想根據決定在我的組件上定製一個設置在div上的css類:「在dom樹中有一個祖先home
」 - 這應該區分這兩種用例。
我可以做這樣的事情在CSS:
:host-context(.home) .active {
background-color: #405976;
}
但隨後含.active
類的所有選擇的組合也應結合:host-context
和II不想css來增加複雜性,因爲它已經是複雜。 我寧願只根據條件設置類.active
。在css文件!中,不在代碼中。 (這就是爲什麼:host-context
最終存在的原因。)
你不能,實際上你不應該。您不應該在基於HTML內容的代碼中做出任何決定。在你的組件中@Input()一些變量,並根據它決定'主動'類。這是我所能猜到的,因爲你沒有提供任何代碼。 –
好的。我現在知道了。我實現了它,它很好。謝謝。這是更清潔,我同意。 Stil ....我的第一印象是,這種方式最終會增加代碼而不是css代碼的複雜性。如果對於每一個這樣的微小決策,我都會添加一個@Input(有時候也有一些邏輯),我的組件會被「太多的功能」所污染。 我寧願讓css儘可能地實現它自己的生活,而不會干擾組件代碼。 :主機上下文適用於這種情況。你可以在普通的css中使用它,但不知道如何在css文件中的ngClass表達式中。 – Dacian
你總是可以將它分割成單獨的指令,它將爲你管理一些css,從而清除「主要」組件。 –