将 angular 中的文本转换为 html 格式

convert text to html format in angular

我正在创建 post 承诺请求,使用 angular 6. 在我创建的服务中 一个看起来像这样的请求函数:

sendRequest() {
let promise = new Promise((resolve, reject)=>{
  this.http.post(this.url, this.params, {responseType: 'text'}).toPromise()
  .then(res =>{
    this.data = res;
    this.router.navigateByUrl('1/success'); // I want to show res code on this page
    resolve();
  },
  error => {
    this.data = error;
    this.router.navigateByUrl('1/fail');
    reject(error);
  } 
)
return promise;
})}

res returns 文本 html 格式如下:

<html> <head> some code </head> <body> code i need </body> </html> ,很好,但我想将该文本用作 success/fail 页面上的 html 代码。具体来说,body 标签中的所有内容。我怎样才能做到这一点?如果我使用

之类的东西
<div [innerHTML]="res"></div>

{{res}}

它只是 returns 纯文本。

像这样使用innerHTML

<div [innerHTML]="res"></div>

确保你在附近有控制器,也许你忘记了?

它应该按照这个工作: Angular - template syntax

Angular 编码 出于安全目的由 api 返回的值。 您必须在您的服务中使用 DomSanitizer 服务才能绕过它。

首先注入服务:

constructor(private sanitizer:DomSanitizer){}

然后在您的 sendRequest 函数中使用它:

this.data = this.sanitizer.bypassSecurityTrustHtml(res);    

然后在您的 html 文件中:

<div [innerHTML]="data"></div>

注:

信任 HTML 格式的值可能会造成 安全风险 ,如 docs.

中所述
<div [innerHtml]="challenges_Data.challenges"></div>

这里 challenges_Data 是一个对象,挑战是 challenges_Data 的值。