ionicで文字列をHTMLとしてレンダリングする


メッセージの表示等で変数に入っている文字列をHTMLとして表示したい場合の方法を試していきます。

実装

普通にHTMLのコードを変数として出力するとそのまま出力されてしまうので「DomSanitizer」を使用して表示していきます。

まずは、home.htmlに表示をしていきます。
innnerHtmlを使用して表示する必要があるので注意しましょう。

<ion-header>
  <ion-navbar>
    <ion-title>
      Ionic Blank
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <div [innerHTML] = "htmlCode"></div>
</ion-content>

次にhome.tsで「DomSanitizer」を使用してHTMLのコードを変換していきます。

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { DomSanitizer,SafeHtml } from '@angular/platform-browser';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  htmlCode:SafeHtml;

  constructor(public navCtrl: NavController,private sanitizer: DomSanitizer) {
    this.htmlCode = sanitizer.bypassSecurityTrustHtml('aaa<br>bbb<span style="color:red">ccc</span><script>alert();</script>');
  }
}

実行

HTMLの内容がしっかりと反映されている確認してみます。

とくに問題なく改行やstyleが適用されています。

  • このエントリーをはてなブックマークに追加

PAGE TOP