Создать тему по запросу angular 8
У меня есть требование взять цветовую палитру из файла конфигурации, который содержит цвета в зависимости от домена.
Файл конфигурации - это файл json, размещенный в корне проекта.
В материале angular 1 есть способ сгенерировать тему по запросу с помощью lazy-generate-theme
Есть ли способ сделать подобное в угловом материале с угловым 8?
0 ответов
Чтобы использовать несколько тем, ознакомьтесь с этим руководством и для создания цветовой палитры мы часто используем этот Генератор палитры дизайна материалов, с помощью которого вы можете настроить цветовую тему, например, следующим образом:
...material custom theme implementation from guide...
...
.red-theme {
@include angular-material-theme($red-theme);
@include custom-components-theme($red-theme);
....
}
Теперь вы можете использовать класс.red-theme в теле для изменения цвета. Лучший способ, который я нашел, - это предварительно выбрать строку вроде
color-palette: "red-theme"
из вашего внутреннего API в хуке APP_INITIALIZER (как это работает, ссылка) и использовать его через службу:
your.service.ts
setColorPalette(colorPalette) {
const body = document.querySelector('body');
body.classList.add(colorPalette);
}