Как с angular2 rc.6 отключить дезинфекцию на встроенном теге html, отображающем pdf

Я действительно не понимаю, что я делаю неправильно здесь:

Шаблон:

<embed [src]="pdfUrl" width="500" height="100%" type='application/pdf'>

Класс:

pdfURL;
constructor(private domSanitizer : DomSanitizer) {}
ngOnInit() {
    this.pdfUrl = this.domSanitizer.bypassSecurityTrustUrl('http://example.com/pdf.pdf')
}

Это фактически не загружает <embed>, но не выдает ошибку.

Я попробовал это, используя тип SafeUrl на pdfURL и bypassSecurityTrustResourceUrl(). Тег <embed> получает правильный URL-адрес, но ничего не отображается.

Ответ 1

Я думаю, это должно быть:

this.pdfUrl = this.domSanitizer.bypassSecurityTrustResourceUrl('url')

и используйте его как:

<iframe [src]="pdfUrl" width="500" height="600" type='application/pdf'></iframe>

См. Plunkr

Обновить (в Chrome есть ошибка с тегом embed)

Для тега embed вы можете повторно внедрить тег через outerHTML:

this.renderer.setElementProperty(el, 'outerHTML', el.outerHTML)

В этом случае plunker

Ответ 2

сначала спасибо, но я не понимаю, что у меня точно такое же и вижу результат

мое вложение не отображается... У меня нет css, чтобы скрыть его:

Я думаю, что это потому, что я не повторяю embed tag? Когда я открываю sidenav, моя вставка уже существует, я просто меняю URL-адрес src, и он не содержит контент, есть ли решение?

введите описание изображения здесь

Ответ 3

Но здесь вы можете видеть, что FIREFOX работает нормально:

FIREFOX!!!