Как изменить оператор импорта на основе переменной в файле ( Style.scss)

#javascript #css #angular #webpack #sass

#javascript #css #угловой #webpack #sass

Вопрос:

У меня есть этот оператор импорта в моем проекте

 @import "./assets/sass/style.angular.scss";
 

Как я могу изменить путь на основе переменной. Я хочу, чтобы он менялся, когда пользователь меняет язык проекта на арабский, используя этот путь

 @import "./assets/sass/style.angular.RTL.css";
 

Ответ №1:

Это не встроенная функциональность angular, но вы всегда можете добавить класс в свой файл app.component на основе языка или тега данных. Что-то вроде этого:

 @Component({
    templateUrl: 'app.component.html',
    selector: 'app-component
})
export class AppComponent {
    @HostBinding('attr.data-lang') language: string = "en";
}
 

затем в вашем файле style.angular.RTL.css вы должны добавить в свои селекторы префикс [data-lang=»arabic», чтобы он включался всякий раз, когда языковая переменная была установлена на арабский.

Ответ №2:

Если вам нужно if-else внутри .scss файла, вы можете проверить этот подход

 // Define a mixin to import what file needs to be imported

@mixin importRightScssFile($firstUrl: true) {

  @if $firstUrl {
    @import('path/to/your/first-url.scss');
  } @lse {
    @import('path/to/your/second-url.scss');
  }
}

// Whenever you want you can simply use this **mixin** to load whatever URL you want like this: 

.first-url-class {
 @include importRightScssFile($firstUrl: true);
}

.second-url-class {
 @include importRightScssFile($firstUrl: false);
}