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

Я пытаюсь изучить Angular Material, но считаю документацию неточной или неполной. Судя по документации для версии 17, моя основная панель инструментов должна иметь желтый фон:

стили.scss:

@use '@angular/material' as mat;

@include mat.core();

$my-primary: mat.define-palette(mat.$yellow-palette);
$my-accent: mat.define-palette(mat.$indigo-palette);
$my-warn: mat.define-palette(mat.$red-palette);

$my-theme: mat.define-light-theme((
  color: (
    primary: $my-primary,
    accent: $my-accent,
    warn: $my-warn,
  ),
  typography: mat.define-typography-config(),
  density: 0
));

@include mat.all-component-themes($my-theme);

угловой.json:

"architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:application",
          "options": {
            ...
            "styles": [
              "src/styles.scss"
            ]
            ...
          }

Вместо этого фон моей панели инструментов светло-серый. Это из-за некоторых блоков, которые появляются после загрузки файла моей темы.

Откуда берутся эти блоки стилей и почему они добавляются после стилей, определенных приложением? Ожидают ли они, что вы переопределите их, используя более конкретный селектор CSS? Я импортирую основные правила темы в свой scss, так почему же Angular Material 17 считает необходимым добавить эти стили для начала?

Я нашел частичный ответ: Angular Material 17.3.x использует Material Design 3, а не Material Design 2, поэтому панель инструментов должна быть нейтральной. Но это не отвечает на вопрос, как они ожидают, что вы это отмените. Какой смысл вызывать mat.core(), если они собираются просто добавить кучу блоков <style>, которые переопределят вашу пользовательскую тему? Как они ожидают, что вы переопределите эти стили, если вы не можете изменить, загружаются ли стили (или порядок их загрузки) или нет?

Daniel Arant 24.06.2024 18:26
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Потому что нужно добавить color = "primary"https://v17.material.angular.io/comComponents/toolbar/api

Спасибо! Это ловко. Хотелось бы, чтобы об этом что-нибудь сказали в путеводителях.

Daniel Arant 25.06.2024 13:40

Другие вопросы по теме