【问题标题】:Angular Material dark and light theme toggle not being applied throughout applicationAngular Material 深色和浅色主题切换未在整个应用程序中应用
【发布时间】:2019-06-17 21:55:49
【问题描述】:

我在这里实现了这个主题切换:StackBlitz

它几乎可以工作。切换时主题将全局应用,但不会覆盖应用程序中的所有内容。这是之前和之后(大部分 UI 必须被模糊):

轻主题切换

黑暗主题切换

  • 顶部的红色轮廓显示输入控件已切换到 黑暗。
  • 中间的红色轮廓显示选项卡组上的深色背景。
  • 最低的红色轮廓显示切换为白色的表格复选框。

应用程序的主体也会切换到深色背景,但您在此处看不到它,因为 sidnav 正在填充该空间。关于stackoverflow的其他问题似乎遇到了我遇到的相反问题。他们的正文/字体/对话框没有改变,但我的所有人都改变了。我的对话框/输入控件是深色主题,但几乎没有其他主题。我感觉这与我的 sidnav / 路由器设置有关。

【问题讨论】:

  • 如果您为您的应用静态设置任何主题,它可以正常工作吗?
  • @GCSDC 是的。只有当我尝试添加用户切换时才会这样做。

标签: angular angular-material


【解决方案1】:

您提供的 stackblitz 很有帮助,唯一值得注意的是那里的“基本按钮”保持红色并且没有切换颜色;经过调查,我们看到:

  • 在检查元素中,在深色背景下,我们看到的按钮如下: .custom-theme .mat-button.mat-warn { color: #f44336; }
  • 在检查元素中,在 light 主题上,我们看到的按钮如下: .light-custom-theme .mat-button.mat-warn { color: #f44336; }
  • 在您的 light-custom-theme.scss 中,您已将红色定义为警告 $light-custom-theme-warn: mat-palette($mat-red);
  • 在您的 custom-theme.scss 中,您将红色定义为警告 $light-custom-theme-warn: mat-palette($mat-red);

forked your stackblitz 对 custom-theme.scss 进行更改,它现在以黄色作为针对深色/自定义主题的警告颜色

【讨论】:

  • 感谢您的回复,但这不是这里的问题。我只是按照那个 stackblitz 作为指南,将它实现到我自己的应用程序中。在上面的屏幕截图中,我的应用程序未按预期运行。使用切换时,深色主题不会应用于我的大部分应用程序。如果我在自定义主题中手动更改暗/亮标志,然后重新编译,则主题会按预期两种方式工作。
  • 嗨@CAlex,你能分享你网站的代码吗?或者为它分享一个 MVCE...
猜你喜欢
  • 1970-01-01
  • 2017-07-17
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多