Issue
I am passing html as innerHtml to my view. Below is my view
<div [innerHTML]="someHtmlCode"></div>
if I pass the below code, it is working fine.
this.someHtmlCode = "<div><b>This is my HTML.</b></div>"
if I pass the below code which contains color, it is not working.
this.someHtmlCode = '<div style="background-color: blue;"><b>This is my HTML.</b></div>';
Solution
This behavior you're getting is normal. The class added to innerHTML
is ignored because by default the encapsulation is Emulated
. Which means Angular prevents styles from intercepting inside and outside of the component.
You should change the encapsulation to None
in your component.
This way, you'll be able to define classes wherever you want: inside styles
or in a separate .css
, .scss
or .less
style-sheet (it doesn't matter) and Angular will add them to the DOM automatically.
import { Component, ViewEncapsulation } from '@angular/core';
@Component({
selector: 'example',
styles: ['.demo {background-color: blue}'],
template: '<div [innerHTML]="someHtmlCode"></div>',
encapsulation: ViewEncapsulation.None,
})
export class Example {
private someHtmlCode = '';
constructor() {
this.someHtmlCode = '<div class="demo"><b>This is my HTML.</b></div>';
}
}
Answered By - Unsinkable Sam
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.