Angular 5将动态html文件添加到DIV中

时间:2018-01-19 10:33:02

标签: html angular

我是Angular的新手,我正在尝试将html文件作为我的字符串插入并插入到DIV元素中

我的search.component.html名为

<div #ID></div>

components.ts

import { Component} from '@angular/core';

@Component({
  selector: 'app-search',
  templateUrl: './search.component.html',
  styleUrls: ['./search.component.scss']
})
export class SearchComponent {
  constructor() {}

  let ServerResponseHtml = '<div><input type="text"/><input type="text"/><span class="btn btn-outline-primary btn-sm" (click)="open(content)">View Document</span></div>';

  document.getElementById("DIV").innerHTML = ServerResponseHtml;
}

我从服务器获得完整的html标记响应,我只需要附加到我的DOM并显示内容,标记也可以有内联样式。

我试过<div [innerHTML]="ServerResponseHtml"></div> and <div innerHTML="{{ServerResponseHtml}}"></div>,但这不会显示为html,而是显示为文字。

1 个答案:

答案 0 :(得分:4)

我们需要使用safehtml来显示html。

  1. 我们需要为此创建管道。 safe-html-pipe.ts

    import { DomSanitizer } from '@angular/platform-browser'
    
    @Pipe({ name: 'safehtml'})
    
    export class SafeHtmlPipe implements PipeTransform  {
        constructor(private sanitized: DomSanitizer) {}
       transform(value) {
          return this.sanitized.bypassSecurityTrustHtml(value);
         }
    }
    
  2. component.ts 我们需要导入管道

  3. 从'@ angular / core'导入{Component,NgModule,Pipe,PipeTransform}

    import {BrowserModule} from '@angular/platform-browser'
    import { FormsModule } from '@angular/forms';
    import { DomSanitizer } from '@angular/platform-browser'
    import { SafeHtmlPipe } from './safe-html-pipe';
    @Component({
    selector: 'app-root',
    template: 
        `<div [innerHtml]="safeHtmlContent | safehtml">
     </div>"})`
    
    export class AppComponent {
     name:string;
      safeHtmlContent : string;
      constructor() {
        this.name = 'Angular2'
        this.safeHtmlContent  = '<html><head><title>Hello safe</title></head><body><h1>hello world Hello Umesh</h1></body></html>';
      }
    }
    

    希望这会有所帮助:)。