В конце концов удалось выяснить это, используя svg-inline-loader
.
declare let require: any;
...
this.iconRegistry.addSvgIconLiteral('cat', this.sanitizer.bypassSecurityTrustHtml(
require('!svg-inline-loader!src/assets/animals/cat.svg')));
Встроенный файл можно проверить, просмотрев источник main.js
или файл вашего модуля, и он будет встроен.
Сначала я неохотно продолжал использовать загрузчик, потому что я все еще несколько озадачен тем, как все это работает с CLI и веб-пакетом, а также подумал про себя: «Это всего лишь файл!почему бы просто не загрузить эту чертову вещь и внедрить ее ».
После нахождения svg-inline-loader
кажется, что она удаляет« корку »из svg, что является немного гротескным термином для ненужного кода, который мог бы сделать что-то вроде Illustratorдоп.
Для остальной части шаблона см. Как использовать пользовательские значки SVG в угловом материале .
-
Сноска: я сделал одинглупая вещь, которая на некоторое время полностью отбросила меня.Я попытался создать массив значков и перебрать их, чтобы импортировать их все.
require('!svg-inline-loader!src/assets/animals/' + name + '.svg');
Это НЕ сработает.Оператор require обрабатывается во время компиляции с помощью некоторого волшебства веб-пакета, и я даже не знаю точно, что делает компилятор, но он не может встроить файл.Мне нужно было продублировать вышеупомянутый addSvgIconLiteral для каждой иконки, которую я хотел внедрить.