ОШИБКА TypeError: невозможно прочитать свойство 'документ' неопределенного при синтаксическом анализе скрипта в innerhtml - PullRequest
0 голосов
/ 06 мая 2020

Я анализирую скрипты во внутреннем HTML в angular, на которые я ссылался в этой ссылке здесь

Мой код

import { Component, OnInit, Input,OnChanges, ViewChild, ViewEncapsulation, SimpleChange, SimpleChanges } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@Component({
  selector: 'lib-html-viz',
  templateUrl: './html-viz.component.html',
  styleUrls: ['./html-viz.component.css'],

})
export class HtmlVizComponent implements OnInit ,OnChanges{

  constructor(public sanitzer:DomSanitizer) { }
  @Input() data;
  @Input() reportOptions
  innerHtml
  @ViewChild('htmlContainer') container;

  ngOnInit() {
  }
  ngOnChanges(changes:SimpleChanges)
  { if(changes.reportOptions)
    {
      this.setInnerHtml()
    }
  }
  setInnerHtml()
  {
     if(this.reportOptions.htmlRes)
     { let final=this.reportOptions.htmlRes
       this.innerHtml=this.sanitzer.bypassSecurityTrustHtml(final)
       setTimeout(()=>{
        let scripts = this.container.nativeElement.getElementsByTagName('script');
        for (let script of scripts){
          eval(script.text)
        }
       })

     }
  }

}

использование <div #htmlContainer *ngIf="innerHtml" [innerHTML]="innerHtml"></div>

В этом коде я получаю ответ HTML от API, разбираю тег скрипта и отображаю результат HTML. при этом я получаю такую ​​ошибку

errors.ts:35 ERROR TypeError: Cannot read property 'document' of undefined
    at eval (eval at <anonymous> (html-viz.component.ts:34), <anonymous>:3:3636)
    at eval (eval at <anonymous> (html-viz.component.ts:34), <anonymous>:5:22947)
    at html-viz.component.ts:34
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (ng_zone.ts:262)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (zone.js:496)
    at ZoneTask.invoke (zone.js:485)
    at timer (zone.js:2054)

Я не знаю, где прерывается код

Я добавил свой HTML ответ в файл, вот ссылка здесь

Может ли кто-нибудь помочь мне с решением или есть ли другой способ разобрать HTML в angular

заранее спасибо :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...