Angular 18迁移:SCSS主题代码从@import改@use的正确语法
修正后的Angular Material 18主题配置代码
错误原因很明确:你把define-palette拼写成了define-palete(少了一个字母t),这是导致函数未识别的直接原因。以下是修正后、且完全对齐你旧版主题配置的代码:
@use '@angular/material' as mat; // 初始化Material核心基础样式 @include mat.core(); // 定义调色板,与旧代码保持完全一致的色调选择 $my-app-primary: mat.define-palette(mat.$indigo-palette); // 对应旧版的$material-primary $my-app-accent: mat.define-palette(mat.$pink-palette, 500, 900, A100); $my-app-warn: mat.define-palette(mat.$red-palette); // 构建浅色主题 $my-app-theme: mat.define-light-theme(( color: ( primary: $my-app-primary, accent: $my-app-accent, warn: $my-app-warn, ) )); // 将主题应用到所有Material组件 @include mat.all-component-themes($my-app-theme);
额外说明:
- 旧版的
$material-primary对应新版的mat.$indigo-palette,这样能确保原有主题主色不变 - 新版的
mat.define-light-theme采用嵌套参数结构,替代了旧版的多参数写法 mat.all-component-themes是新版替代angular-material-theme的方法,功能完全一致
内容的提问来源于stack exchange,提问作者Nietzsche
相关产品推荐
相关产品推荐

