Изменение переменной Sass динамически в компоненте Ionic 3 / Angular 5 - PullRequest
0 голосов
/ 02 октября 2018

Я хочу изменить основной цвет на одной странице и установить для остальной части приложения.

Я следую этому уроку, чтобы сделать это https://robferguson.org/blog/2017/11/12/theming-your-ionic-3-app/, поэтому пытаюсь приспособиться к моему контекстуэто то, что я делаю.

app.html

<ion-nav [root]="rootPage" #content [class]="theme"></ion-nav>

app.component.ts

    export class MyApp {
         rootPage:any = WelcomePage;

         public theme: String = 'theme';


     constructor(platform: Platform, public event: Events ) {
    platform.ready().then(() => {

      event.subscribe('theme:toggle', () => {
        this.toggleTheme();
      });

    });

  }



public toggleTheme() {
    console.log('tooogletheme')
    if (this.theme === 'theme') {
      this.theme = 'theme2';
    } else {
      this.theme = 'theme';
    }
  }

/ theme / variables.scss

$theme_color: #063351; //Default

$colors: (
  primary:   $theme_color,
  secondary:  #32db64,
  danger:     #f53d3d,

/ theme / theme.scss

 .theme {
    $theme_color: rgb(0, 152, 145) !global; 
 }

/ theme / theme2.scss

  .theme2 {
     $theme_color: rgb(255,77,90)  !global;
  }

И я хочу изменить его с другой страницы, поэтому я звоню ...

 this.event.publish('theme:toggle');

событие вызывается, но ничего не происходит.

Спасибо за любую помощь.

Редактировать:

Я вижу изменения имени классавнутри Ion Nav, когда я вызываю событие, чтобы переключить класс.но я не знаю, меняется ли $ theme-color или класс не применяется к содержимому.

enter image description here

1 Ответ

0 голосов
/ 02 октября 2018

вам может понадобиться директива ngClass и динамическое добавление соответствующего класса:

<ion-nav [root]="rootPage" #content [ngClass]="theme"></ion-nav>
...