我想在Angular中呈现一些HTML表格和一些数据,数据放在<p>
标签中
在我的report.component.html
文件中
<div class="ui-g-12">
<div class="ui-g-12" *ngFor="let item of items">
<p-fieldset legend="{{item.recordTime}}" [toggleable]="true" [collapsed]="true">
<div class="overflow">
<p [innerHTML]="item.message"></p>
</div>
</p-fieldset>
</div>
</div>
在我的
report.component.ts
文件中。ngOnInit() {
this.listAllReports();
}
listAllReports() {
this.httpSvc.fetchWithoutSpinner(this.urlBuilder.getAllReportUrl()).subscribe(data => {
data.forEach(report => {
const newReport= new Report();
newReport.message = '<table style="font-family: arial, sans-serif; border-collapse: collapse; width: 100%;"> <tr> <th style="border: 1px solid #dddddd; text-align: left; padding: 8px;">Item1</th> <th style="border: 1px solid #dddddd; text-align: left; padding: 8px;">Item2</th> <th style="border: 1px solid #dddddd; text-align: left; padding: 8px;">Item3</th> <th style="border: 1px solid #dddddd; text-align: left; padding: 8px;">Item4</th> <th style="border: 1px solid #dddddd; text-align: left; padding: 8px;">Item5</th> <th style="border: 1px solid #dddddd; text-align: left; padding: 8px;">Item6</th> </tr><tr> <td style="border: 1px solid #dddddd; text-align: left; padding: 8px;">238342</td><td style="border: 1px solid #dddddd; text-align: left; padding: 8px;">000</td><td style="border: 1px solid #dddddd; text-align: left; padding: 8px;">807</td><td style="border: 1px solid #dddddd; text-align: left; padding: 8px;">ZZZZ</td><td style="border: 1px solid #dddddd; text-align: left; padding: 8px;">XXX</td><td style="border: 1px solid #dddddd; text-align: left; padding: 8px;">YYY</td></tr></table>';
newReport.recordTime = report.recordTime;
this.items.push(newReport);
});
});
}
注意,在
newReport.message
中,里面有一些应该被渲染的HTML代码。但是表格没有被渲染:
![enter image description here](https://istack.dev59.com/Gfh8w.webp)
DomSanitizer
以获取您的答案。 - Poul Kruijtp
标签(我们称之为inlineP
)声明一个ViewChild()
并通过inlineP.nativeElement.innerHTML = <your html value>
内联 HTML 来解决它。 您必须在ngAfterViewInit()
中执行此操作。 - Valentino Ru