2017.05.23
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が適用されています。