Style not working for innerHTML in Angular

HtmlCssAngular

Html Problem Overview


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>';

Html Solutions


Solution 1 - Html

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

Solution 2 - Html

I was also facing the same issue but after reading this below link I figured out the solution and it was done without using pipes

Hope this will help you.

https://netbasal.com/angular-2-security-the-domsanitizer-service-2202c83bd90

Solution 3 - Html

Instead of an inline style, I put the style in a class.

Not sure if using class is an option for you or not, but here's a Plunker demo.

HTML:

this.someHtmlCode = '<div class="demo"><b>This is my HTML.</b></div>'

CSS:

.demo{
    background-color: blue;
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChatraView Question on Stackoverflow
Solution 1 - HtmlUnsinkable SamView Answer on Stackoverflow
Solution 2 - HtmlShehram TahirView Answer on Stackoverflow
Solution 3 - HtmlNehalView Answer on Stackoverflow