本文主要為大家介紹了關於Angular 4中如何顯示內容的CSS樣式的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。在開始本文的正文之前,我們先來看看angular2中將標籤的文字輸出在頁面上的相關內容,為了系統性的防範XSS問題,Angular預設把所有值都當做不可信任的。 當值從模板中以屬性(Property)、DOM元素屬性(Attribte)、CSS類別綁定或插值表達式等途徑插入DOM的時候, Angular將對這些值進行無害化處理(Sanitize),對不可信的值進行編碼。
h3>Binding innerHTML</h3> <p>Bound value:</p> <p class="e2e-inner-html-interpolated">{{htmlSnippet}}</p> <p>Result of binding to innerHTML:</p> <p class="e2e-inner-html-bound" [innerHTML]="htmlSnippet"></p>
[innerHTML]="htmlSnippet"
# 這個屬性可以辨識 HTML標籤 但不辨識標籤中的屬性值
發現問題
大家都知道Angular 中有 innerHTML 屬性來設定要顯示的內容,但如果內容包含 CSS 樣式,無法顯示樣式的效果。
例如:
public content: string = "<p style='font-size:30px'>Hello Angular</p>"; <p [innerHTML]="content"></p>
只會顯示 Hello World ,字體不會是 30px,也就是 CSS 樣式沒有效果。
解決方案
自訂一個 Pipe 來轉換內容。看下面程式碼。
寫一個 HtmlPipe 類別
import {Pipe, PipeTransform} from "@angular/core"; import {DomSanitizer} from "@angular/platform-browser"; @Pipe({ name: "html" }) export class HtmlPipe implements PipeTransform{ constructor (private sanitizer: DomSanitizer) { } transform(style) { return this.sanitizer.bypassSecurityTrustHtml(style); } }
在需要的模組裡面引入管道 HtmlPipe
@NgModule({ declarations: [ HtmlPipe ] })
在 innerHtml 中增加管道名稱
<p [innerHTML]="content | html"></p>
這樣就可以顯示 content 的 CSS 樣式。
相關推薦;
以上是Angular4中如何顯示內容的CSS樣式範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!