Угловой материал Динамически определять тему - PullRequest
0 голосов
/ 29 ноября 2018

Я переписываю приложение AngularJS, где тема приложения предоставляется сервером.Также тема может быть отредактирована пользователем в приложении (с помощью палитры цветов).

Это стало возможным благодаря ng.material.IThemingProvider и $mdTheming из материала Angularjs.Но в Angular этих сервисов не существует.Таким образом, возникает вопрос: как я могу динамически создать тему Angular Material и использовать ее?


Ответ сервера

Я получаю следующие данные с сервера:

"css": {
    "--nav-font-color-accent": "#fff",
    "--nav-font-color-active": "#fff",
    "--primary": "#4f2d7f",
    "--nav-background": "#fefffe",
    "--nav-font-color": "#47a742",
    "--warn": "#ff5722",
    "--accent": "#00a8b5",
    "--brand-color": "#47a742"
}

Затем эти данные преобразуются в тему материала Angularjs через ng.material.IThemingProvider:

 this.themeProvider.definePalette('primaryPalette', this.generatePalette(config['--primary']));
 this.themeProvider.theme('default')
          .primaryPalette('primaryPalette')

Isесть ли способ воспроизвести эту функцию в Angular Material 7.1.0?

1 Ответ

0 голосов
/ 29 ноября 2018

В Angular Material2 вы можете динамически применять темы, но вы не можете динамически создавать темы, потому что их создание осуществляется с использованием SASS, которое требует компиляции для создания пригодного для использования CSS.

...