If you want to style host component. You can use ':host-context'.
// host @Component({ selector: 'my-app', template: ` <div class="styled-component"> <hostcontext-styling></hostcontext-styling> </div> `, })
In the host component, we have 'styled-component' class, we want to apply some css to it from the child component:
import { Component } from '@angular/core';
@Component({
selector: 'hostcontext-styling',
template: `
<div>
I'm a div that wants to be styled
</div>
`,
styles: [
`
/* apply a border if any of our ancestors has .styled-component applied */
:host-context(.styled-component) {
border: 1px solid gray;
display:block;
}
`
]
})
export class HostContextStylingComponent {
}
Now if we want to style its child component, we can use '::ng-deep':
import { Component } from '@angular/core';
@Component({
selector: 'hostcontext-styling',
template: `
<div>
I'm a div that wants to be styled
</div>
<child-component></child-component>
`,
styles: [
`
/* apply a border if any of our ancestors has .styled-component applied */
:host-context(.styled-component) {
border: 1px solid gray;
display:block;
}
:host ::ng-deep p {
background-color: yellow;
}
`
]
})
export class HostContextStylingComponent {
}