@worksss

Как динамически вставлять svg в Angular2?

Добрый день.
Хочется из компонента вставлять svg (забирать из базы)
https://plnkr.co/edit/lPAxCqhmHwBrotfw9Bgl?p=preview

Просто подстановка в template работает. А если делать через переменную
this.path = `<path d="m .... то нет. Но и не выдает ошибки. Что делать?
svg:path так же не решает
  • Вопрос задан
  • 598 просмотров
Решения вопроса 1
navix
@navix
Angular & TypeScript
Тут нужно напрямую работать с DOM.

Создаем SVG из строки:
private svgElementFromString(str: string): SVGElement {
  const div = document.createElement('div');
  div.innerHTML = str;
  const svg = div.querySelector('svg') as SVGElement;
  return svg;
}


А потом инжектим в ноду:
const el = this.el.nativeElement;
el.innerHTML = '';
this.renderer.appendChild(el, svg);


Обновление:

Так же есть вариант с [innerHTML]:

<div [innerHTML]="svg">

Но нужно пропустить строку через санитайзер:

constructor(private sanitizer: DomSanitizer)
  ...
  this.svg = this.sanitizer.bypassSecurityTrustHtml(svgString);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы