Style not working for innerHTML in Angular [duplicate]

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>";
  }
}

Leave a Comment