Почему Angular innerHTML не выводит код во фрейме и не все элементы разметки?

Я поставил такой код, где значение содержит текст целой страницы с фреймами, видео, фото, текстом. Выводится только текст со стилями, а ссылки на ютуб во фрейме и "слетели" куда-то.

 <div [innerHTML]="store.selectedPost['content']['rendered']"></div>

Это как-то связано с безопасностью? Как сделать, что б всё отображалось, "как есть в коде" ?


Ответы (1 шт):

Автор решения: Валера Битковский

Как я могу предположить ангулар вырезает потенциально небезопасный код, для того чтобы отобразить данные их нужно сначала санитизировать, я предлагаю делать это через pipe, код пайпа:

@Pipe({ name: 'safeHtml' })
export class SafeHtmlPipe implements PipeTransform {
  constructor(private dom: DomSanitizer) {}

  public transform(value: string): string{
    return this.dom.bypassSecurityTrustHtml(value);
  }
}

И уже в коде использовать таким образом:

 <div [innerHTML]="store.selectedPost['content']['rendered'] | safeHtml"></div>
→ Ссылка