【问题标题】:Pass HTML to mat dialog - Angular Material将 HTML 传递给 mat 对话框 - Angular Material
【发布时间】:2018-07-21 07:24:01
【问题描述】:

我正在尝试将 HTML 传递给 mat 对话框,但它在对话框中显示 [object HTMLTableElement] 而不是 Table HTML。

我尝试过的步骤:

  1. 在模板中创建一个元素引用如下:

    <table hidden #contentTable><th></th><tr></tr></table>
    
  2. 在组件中访问 ViewChild 为

    @ViewChild('contentTable', { read: ElementRef }) contentTable: ElementRef<any>;
    
  3. 在 DialogComponent 中将此作为数据传递为

    const tableData = this.contentTable.nativeElement;
    const dialogRef = this.dialog.open(GeneralDialogComponent, {
        panelClass: 'customDialog',
         data: {
            title: `${data.count}`,
            content: tableData
         }
    });
    
  4. 在DialogComponent中,访问的数据内容如下:

    // method in component
    getHtml(html) {
       return this.domSanitizer.bypassSecurityTrustHtml(html);
    }
    
  5. 然后在 HTML 中这样访问:

    <div [innerHTML]="getHtml(data?.content)"></div>
    

但它不打印表格而是打印[object HTMLTableElement]

截图如下:

请问有什么线索吗?

【问题讨论】:

  • 您的tableData 是否包含任何&lt;br&gt; 标签??
  • 不...是 ElementRef

标签: angular angular6 angular-material-6


【解决方案1】:

你应该传递 elementRef 的 innerHtml 而不是它本身:

<div [innerHTML]="getHtml(data?.content.innerHTML)"></div>

【讨论】:

  • 它不会打印表格然后..因为我需要outerHTML但在ElementRef中不可用
  • 由于 ElementRef 和 outerHTML 工作,我没有收到错误,但它也不是预期的那样。
  • 它返回空 HTML .. 请提供更多建议.. 我应该尝试用户 TemplteRef 吗?
  • 我在 MAT Dialog 中进行操作...这有什么不同吗?
  • 没有区别stackblitz
猜你喜欢
  • 2019-10-25
  • 2019-04-16
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-05-07
相关资源
最近更新 更多