присвоить классу темы angular переменную

#angular

#angular

Вопрос:

У меня есть 4 темы, которые я разрешаю пользователю выбирать для моего приложения angular. Затем я хочу присвоить строку, соответствующую этой теме, основному div, который содержит приложение. Я могу сделать это вручную, изменив

 <div class="dark-theme"> or
<div class="default-theme"> etc.
  

Что я хочу иметь возможность сделать, так это установить classname для темы из переменной, которую я извлекаю из настроек приложения. например
(component.ts)

 this.theme = this.settings.theme
  

(component.html )

 <div class={{theme}}>
  

Я пробовал [ngClass], [className], {{theme}}, ‘{{theme}}’ и кучу других вариантов, но ничего не работает. Я знаю, что передаю правильное название темы в html, поскольку я также могу отобразить его в элементе p>. Все прочитанное, что я сделал, продолжает ссылаться на использование условного выражения с ngClass. Вы не можете просто присвоить строку непосредственно из содержимого / значения строковой переменной в компонентном typescript?

Спасибо….

Комментарии:

1. <div class="{{theme}}"> (у вас отсутствуют двойные кавычки)

2. Нет, тема не меняется. Если я наберу class=»dark-theme» вручную, это сработает. Но в моем теге paragraph в качестве значения переменной отображается ‘»dark-theme»‘, поэтому я знаю, что оно входит.

3. Проверьте этот небольшой пример. Нет причин, по которым это не сработало бы. Проверьте окончательный HTML-код, просмотрев исходный код (Ctrl U в большинстве браузеров)

4. я добавляю правильную тему в html. Но это не меняет тему, когда я меняю класс. Даже пытался перезагрузить страницу вручную, но тема по-прежнему не принимается.

5. Если окончательный HTML правильный, то он не связан с Angular. Ваш браузер понятия не имеет, задано ли имя класса жестко или происходит из переменной.

Ответ №1:

 <div [ngClass]="theme"/>
  

Попробуйте это