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

Angular 17中@angular/material-experimental自定义M3调色板报错咨询

解决Angular 17自定义M3调色板的"Expected $config.color.primary to be a valid M3 palette"错误

错误核心原因是直接传入的颜色映射不符合Material Design 3(M3)调色板的结构要求,M3规定调色板必须通过@angular/material-experimental提供的define-palette函数生成,而非直接使用色阶键值对。

修正后的完整代码如下:

@use "@angular/material" as mat;
@use "@angular/material-experimental" as matx;

// 自定义M3主色调的各个色阶
$primary-tones: (
    0: #000000,
    10: #191027,
    20: #2b1a41,
    25: #3d245c,
    30: #4f2f76,
    35: #9257c5,
    40: #654083,
    50: #79539b,
    60: #9d80b7,
    70: #c1aed3,
    80: #e5dbef,
    90: #e5ddee,
    95: #e9e3ef,
    98: #ebe7ef,
    99: #efecf1,
    100: #ffffff,
);

// 将自定义色阶转换为符合M3规范的调色板
$primary-palette: matx.define-palette($primary-tones);

// 定义完整的M3主题配置
$m3-custom-theme: matx.define-theme((
    color: (
        primary: $primary-palette
    )
));

// 生成最终的浅色主题
$light-theme: matx.define-theme($m3-custom-theme);

html,
body {
    height: 100%;
    @include mat.button-theme($light-theme);
}

关键修正点:

  • 使用matx.define-palette处理自定义色阶,生成M3系统认可的调色板结构,该函数会自动补充主题所需的元数据(如默认色态、交互色态等)
  • 修正了主题定义时的变量名错误(原代码中matx.define-theme($m3-custom)应为matx.define-theme($m3-custom-theme))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:36:00