You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 15与Material 15主题primary color失效及导入错误求助

升级Angular 15 + Material 15后自定义主题失效及Sass导入错误解决方法

问题概述

升级至Angular 15和Material 15后,自定义theme.scss中的primary颜色失效,已将样式文件从css改为scss,尝试将主题导入styles.scss等方法均无效,同时出现SassError:无法找到要导入的样式表~@angular/material/theming。

错误原因

  1. 路径解析规则变更:Angular 15及以上版本不再支持使用~符号解析node_modules中的依赖路径,原导入语法@import '~@angular/material/theming';已失效。
  2. 样式冲突:angular.json中同时引入Material预构建主题和自定义主题,导致自定义主题样式被覆盖,primary颜色无法生效。

修复步骤

1. 修正theme.scss的导入路径

将theme.scss中的导入语句修改为:

@import '@angular/material/theming';

移除路径前的~符号,适配Angular 15的模块解析规则。

2. 调整angular.json的styles配置

删除预构建主题的引入,避免样式冲突。修改后的styles数组如下:

"styles": [
  "src/styles.scss",
  "src/theme.scss",
  "./node_modules/material-icons-font/material-icons-font.css"
],

3. 保留自定义主题的颜色定义

你的自定义调色板和主题生成代码完全兼容Material 15,无需修改,保持现有代码即可:

@include mat-core();

$md-elearningsupportportalwebapp-primary: (
    50 : #f2e2f0,
    100 : #dfb8d8,
    200 : #c988bf,
    300 : #b358a5,
    400 : #a33591,
    500 : #93117e,
    600 : #8b0f76,
    700 : #800c6b,
    800 : #760a61,
    900 : #64054e,
    A100 : #ff95e3,
    A200 : #ff62d5,
    A400 : #ff2fc8,
    A700 : #ff15c1,
    contrast: (
        50 : #000000,
        100 : #000000,
        200 : #000000,
        300 : #ffffff,
        400 : #ffffff,
        500 : #ffffff,
        600 : #ffffff,
        700 : #ffffff,
        800 : #ffffff,
        900 : #ffffff,
        A100 : #000000,
        A200 : #000000,
        A400 : #ffffff,
        A700 : #ffffff,
    )
);
$md-elearningsupportportalwebapp-accent: (
    50 : #e0eaf3,
    100 : #b3cbe2,
    200 : #80a8cf,
    300 : #4d85bb,
    400 : #266bad,
    500 : #00519e,
    600 : #004a96,
    700 : #00408c,
    800 : #003782,
    900 : #002770,
    A100 : #9fb8ff,
    A200 : #6c92ff,
    A400 : #396cff,
    A700 : #1f59ff,
    contrast: (
        50 : #000000,
        100 : #000000,
        200 : #000000,
        300 : #ffffff,
        400 : #ffffff,
        500 : #ffffff,
        600 : #ffffff,
        700 : #ffffff,
        800 : #ffffff,
        900 : #ffffff,
        A100 : #000000,
        A200 : #000000,
        A400 : #ffffff,
        A700 : #ffffff,
    )
);
$my-app-primary: mat-palette($md-elearningsupportportalwebapp-primary);
$my-app-accent:  mat-palette($md-elearningsupportportalwebapp-accent);
$my-app-warn:    mat-palette($mat-deep-orange);
$my-app-theme: mat-light-theme($my-app-primary, $my-app-accent, $my-app-warn);
@include angular-material-theme($my-app-theme);

4. 清理缓存并重启开发服务器

执行以下命令清理Angular缓存,避免旧配置残留:

ng cache clean

然后重启开发服务器:

ng serve

验证

重启服务器后,检查页面中使用primary颜色的组件(如按钮、工具栏)是否已应用自定义颜色,同时确认Sass导入错误是否消失。

内容的提问来源于stack exchange,提问作者freudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:05:18