iT邦幫忙

0

[Angular]前端無法顯示正確的文章格式

  • 分享至 

  • xImage

環境說明

  1. Angular 16 / typescript
  2. .NET core web API
  3. PostgreSQL

問題

使用者可輸入具有格式的文章內容content並進行保存,當時特地選用了能保存格式的資料庫PostgreSQL,在後端把文章內容(content)get出來並console在瀏覽器時,也能看到是具有格式的,但在前端html部分沒辦法顯示出格式。

有上網查到sanitizer.bypassSecurityTrustHtml 方法可以繞過瀏覽器對於 [innerHTML]的安全性檢查,但也無效,以下提供程式碼及畫面:

  1. 前端HTML:
<p [innerHTML]="OneArticleDatas.content"></p>
  1. 後端TS:
OneArticleDatas:any;
  /**
    * 取單一文章data
    *
    * @return {obj} article datas 
  */
  getOneArticleData(a_id:string) {
    this.HttpApiService.getOneArticleRequest(a_id).subscribe(
      res => {
        this.OneArticleDatas = res
        console.log("取單一文章data",this.OneArticleDatas)

        //繞過angular對innerHTML預設的安全性限制
        this.OneArticleDatas.content = this.sanitizer.bypassSecurityTrustHtml(this.OneArticleDatas.content) as SafeHtml;
        //列印檢查格式是否存在
        console.log("content",this.OneArticleDatas.content);
      }
    )
  }
  1. F12 console
    https://ithelp.ithome.com.tw/upload/images/20230908/20162149oOI9sstO2b.png
  2. 前端畫面
  • 輸入時有給予格式,編輯時也有get content並在textarea顯示,也具有格式
    https://ithelp.ithome.com.tw/upload/images/20230908/20162149w4ASzNjvrf.png
  • 唯獨前端的無法正確顯示格式
    https://ithelp.ithome.com.tw/upload/images/20230908/20162149LLyTWVaOnd.png
alien663 iT邦研究生 3 級 ‧ 2023-09-08 17:13:13 檢舉
<pre></pre>
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
小哈片刻
iT邦研究生 4 級 ‧ 2023-09-08 20:56:54

這個很正常,因為HTML會忽略換行符號,所以你要自己手動加回去。

    ...
    //先手動加上換行
    this.OneArticleDatas.content = this.OneArticleDatas.content.replace(/\n/g, "<br/>\n");
    //繞過angular對innerHTML預設的安全性限制
    ...

我要發表回答

立即登入回答