In Angular 2 you can include a stylesheet in a component's template. Because of Angular 2's View Encapsulation the styles only apply to the containing elements.
Is there a way to style the component's main tag without putting a surrounding <div class="component-wrapper"></div>
?
Example plnkr: http://plnkr.co/edit/rANAsR1h9ERBIZV6wuJ8
It has an external css file adding a border and padding to the <app>
tag, and the template attempts to set a background color.
There are several ways to add styles to a component: By setting styles or styleUrls metadata. Inline in the template HTML. With CSS imports.
Our solution to ViewEncapsulation was to override very specific css using highly specific css selectors in 1) global css or 2) creating separate style files for certain views / styles / elements, importing into every component required (e.g. styleUrls: [material-table-override.
Angular components can be styled via global CSS the same as any other element in your application. Simply drop a `<link>` element on your page (typically in index. html) and you're good to go! However, Angular additional gives developers more options for scoping your styles.
You have two options
host
property@Component({ selector : 'my-component', host : { '[style.color]' : "'red'", '[style.background-color]' : 'backgroundColor' } }) class MyComponent { backgroundColor: string; constructor() { this.backgroundColor = 'blue'; } }
styles
property and :host
@Component({ selector : 'my-component', styles : [` :host { color: red; background-color: blue; } `] }) class MyComponent {}
Note there's an odd behavior when using :host
and ViewEncapsulation.None
.
Here's a plnkr with simple examples for both alternatives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With