鍍金池/ 問(wèn)答/HTML5/ angular 想通過(guò)接收到的json字符串生成html頁(yè)面,已經(jīng)轉(zhuǎn)義了,但是總

angular 想通過(guò)接收到的json字符串生成html頁(yè)面,已經(jīng)轉(zhuǎn)義了,但是總是只顯示字符串不顯示標(biāo)簽。

問(wèn)題描述

angular-material 的項(xiàng)目,想改成通過(guò)后臺(tái)傳過(guò)來(lái)的json字符串動(dòng)態(tài)生成頁(yè)面標(biāo)簽,沒(méi)做過(guò),就想先試試簡(jiǎn)單的

htmlString = "<div>1111111</div>"
頁(yè)面直接 {{ htmlString }}
頁(yè)面顯示字符串

之后又改成過(guò)的字符串
頁(yè)面還是顯示字符串,請(qǐng)問(wèn)有做過(guò)的嗎? 為什么只顯示字符串

回答
編輯回答
巫婆

寫(xiě)一個(gè)安全轉(zhuǎn)化管道類似:

import { Pipe, PipeTransform } from '@angular/core'
import { DomSanitizer } from '@angular/platform-browser'

/**
 * 安全轉(zhuǎn)化innerhtml
 */
@Pipe({ name: 'safeInnerHtml' })
export class SafeInnerHtmlPipe implements PipeTransform {
    constructor(private sanitized: DomSanitizer) { }
    transform(value) {
        return this.sanitized.bypassSecurityTrustHtml(value);
    }
}

模版直接:

<div [innerHTML]="xxx | safeInnerHtml"></div>
2017年1月6日 16:57
編輯回答
夕顏

應(yīng)該使用element.nativeElement.innerHTML = htmlString

2018年6月9日 02:39
編輯回答
心悲涼

這個(gè)是因?yàn)榘踩珕?wèn)題,angular 過(guò)濾掉了直接插入html,官方文檔有介紹,需要特殊的api ,參見(jiàn)官網(wǎng)https://angular.cn/guide/secu...

2017年10月21日 16:04