Я анализирую скрипты во внутреннем 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
заранее спасибо :)