Как мне импортировать SVG из файла в компонент в angular 5?

Все руководства с добавлением svg в компонент в AngularCli, которые я нашел, рекомендуют вставлять его в шаблон html, примерно так:

<div>
  <svg viewBox = "0 0 250 250">
    <svg:g class = "group">
       <svg:polygon class = "shield" points = "125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2" />
       <svg:path class = "a" d = "M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1
      L125,52.1z M142,135.4H108l17-40.9L142,135.4z"/>
    </svg:g>
  </svg>
</div>

Но я хочу, чтобы шаблоны были ясными и вставляли в них только несколько тегов с URL-адресом для отдельного файла svg, например, вот так:

<svg class = "star">
        <use xlink:href = "../../../assets/images/svg/star.svg"
               x = "0"
               y = "0" />
</svg>

Как я могу использовать отдельные файлы svg в компонентах?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
17
0
35 748
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Включите свои файлы SVG в папку src / assets и добавьте папку svg в свой файл angular.json.

"assets": [ "src/assets/svg/*" ]

Таким образом, вы можете включать файл в свои компоненты по своему усмотрению.

Спасибо! Лучше добавить папку svg "assets": ["src / assets / svg / *"], чем каждый файл svg.

mr_blond 01.11.2018 13:12

один из способов сделать это - установить свойство id для вашего svg-файла и поместить ваши svg-файлы в папку с ресурсами. затем используйте этот идентификатор в значке коврика следующим образом:

<mat-icon svgIcon = "my-star-icon"></mat-icon>

это лучший способ сделать это; таким образом вам не нужно иметь дело с тегами svg в html-коде пользовательского интерфейса. также это поддерживает значки Google.

хотя это работает, если вы используете угловатый материал.

Редактировать: Вам необходимо зарегистрировать значок в IconRegistry в вашем компоненте, чтобы это работало:

  constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {
    iconRegistry.addSvgIcon(
        'my-star-icon',
        sanitizer.bypassSecurityTrustResourceUrl('assets/icons/my-star-icon.svg'));
  }

Проверьте документы здесь и пример здесь.

Это требует дополнительной настройки с помощью Angular Material. Можете ли вы обновить свой ответ с их помощью. Если нет, я могу отредактировать ваш ответ.

Ojas Deshpande 16.05.2019 20:47

@OjasDeshpande вы можете отредактировать мой ответ. Я не работал с более новой версией. спасибо, что указали на это.

Arya11 18.05.2019 07:53

Если у вас logo.svg:

  1. Поместите его в папку src/assets
  2. Включить папку в конфиг angular.json: "assets": [ "src/assets" ]
  3. Обратитесь к нему из шаблона: <img src = "assets/svg/logo.svg">

Итак, я пытался сделать это, и, хоть убей, мне не удавалось показать этот SVG до ... После многих поисков в Интернете, и я не думаю, что это только я, и если вы скопируете путь макаронных изделий из Интернет тогда, возможно, вы забыли включить это

xmlns = "http://www.w3.org/2000/svg"

<svg xmlns = "http://www.w3.org/2000/svg" height = "100" width = "100">
<path d = "I love copying and pasting paths"/>
</svg>

Тогда вы можете пойти дальше и сделать свое

 <img src = "assets/img/logo.svg" />

и если это не работает, и вы хотите работать с изображениями вместо этого, поместите свои изображения в

активы / img / copypasta.png

RR_0_RВведите здесь код `` Здесь я попробовал такой способ, чтобы изменить '', сначала создал файл .ts как iconpack и экспортирует его.

`export const ICON_PACK_6 = {

'VNF-pkg': '<svg fill = "#222b45b8" id = "Layer_5" enable-background = "new 0 0 64 64" height = "24" viewBox = "0 0 64 64" width = "24" xmlns = "http://www.w3.org/2000/svg"><g><path d = "m42.929 49h14.142v2h-14.142z" transform = "matrix(.142 -.99 .99 .142 -6.577 92.415)"/><path d = "m52.293 47.707 2.293 2.293-2.293 2.293 1.414 1.414 3.707-3.707-3.707-3.707z"/><path d = "m46.293 46.293-3.707 3.707 3.707 3.707 1.414-1.414-2.293-2.293 2.293-2.293z"/><path d = "m60.884/><path d = "m41 17h14v2h-14z"/></g></svg>',

}; `

после этого вызовите функцию в компоненте приложения внутри конструктора, как показано ниже

this.iconLibraries.registerSvgPack('pack-6', ICON_PACK_6);

когда дошел до небулярного меню добавить

{title: "VNF Onboarding",link: "/package-management/view", icon: { icon: 'VNF-pkg', pack: 'pack-6' }, },]

Выход

Другие вопросы по теме