Делая так, я могу изменить любое значение, связанное с цветом в любом компоненте, потому что эти переменные являются глобальными (определено в styles.css). Когда я меняю тему, эти цвета также меняются в соответствии с цветом новой темы.

на документацию угловых материалов, они рекомендуют использовать-theme файл для компонента, чтобы управлять применением любых связанных с темой стилей к определенному классу.

С моей точки зрения, некоторые недостатки этого подхода:

довольно многословныйразбивает стиль на две разные локациивсе ваши разработчики должны понимать, как работают цвета Angular Materialзатрудняет изменение значений (например, мы могли использоватьmat-color($primary, 200) для границ цветов и теперь хочу изменить его наmat-color($primary, 300), Это будет повторяться на протяжении всей кодовой базы.

При наличии согласованного языка дизайна будет использоваться только подмножество цветов (например, 4 цвета из основной палитры, 3 из акцентной палитры, несколько разных цветов переднего плана / фона и т. Д.).

Учитывая вышесказанное, не имеет ли смысла иметь_colors.scss который определяет точные цвета, используя тему, а не надеется, что разработчики извлекают правильное значение из темы каждый раз?

например может быть что-то вроде:

  $clr-primary-default: mat-color($primary);
  $clr-primary-contrast: mat-color($primary, default-contrast);
  $clr-primary-light: mat-color($primary, lighter);
  $clr-primary-dark: mat-color($primary, darker);

  $clr-accent-default: mat-color($accent);
  $clr-accent-light: mat-color($accent, lighter);
  $clr-accent-dark: mat-color($accent, darker);

  $clr-default-text: mat-color($foreground);
  $clr-secondary-text: mat-color($foreground, secondary-text);

  //etc

Тогда вместо создания отдельного-theme файл для каждого компонента, который требует определенных цветов, я могу просто импортироватьcolors.scss файл и использовать переменные непосредственно в*.component.scss файл.

Просто хотите подтвердить, что вышесказанное звучит правильно и что я не упускаю ничего очевидного, что может причинить боль в будущем?

Другая сложная часть заключается в том, как на самом деле определить их в отдельномcolors Файл эффективно, учитывая, файл будет иметь доступ к данным темы.

Ответы на вопрос(3)

Ваш ответ на вопрос