Angular 2 Material 自定义主题

2023-12-02

我正在使用 Angular 2 和 Angular Material,我需要创建一个自定义主题,以便为组件使用自定义颜色。我跟着角度文档,但我无法让它运行。

到目前为止我做了什么:

1.我创建了一个文件my-theme.scss:

@import "../node_module/@angular/material/_theming";

@include mat-core();

$my-theme-primary: mat-palette($mat-amber);
$my-theme-accent: mat-palette($mat-orange, A200, A100, A400);
$my-theme-warn: mat-palette($mat-red);

$my-theme: mat-light-theme($my-theme-primary, $my-theme-accent, $my-theme-warn);

@include angular-material-theme($my-theme);

2.我将创建的SASS文件导入到styles.css中

@import "my-theme.scss"

3.我在样式部分的 .angular-cli.json 文件中引用了它:

"styles": [
   "styles.css",
   "my-theme.scss"
]

我的本地主机下的网站告诉我“编译失败”模块未找到:'../node_modules/@angular/material/_theming'。

我尝试了导入路径的几种变体(“~@angular/material/_theming”、“../node_modules/@angular/material/_theming”、“~@angular/material/theming”、“../node_modules/@ my-theme.scss 文件中的 Angular/material/theming"...)。在 Angular 文档中,他们使用“主题”作为位置,但我在某处读到,Angular Material 将文件转移到“_theming”,我也在我的肮脏结构中找到了它。

当我使用路径“../node_modules/@angular/material/_theming.scss”时,编译器找到该文件,但由于另一个错误而编译失败:

    Module build failed: Missed semicolon (30:1)  
  28 | // Media queries  
  29 | // TODO: Find a way to respect media query ranges. 
> 30 | // TODO: For example the xs-breakpoint should not interfere with the sm-breakpoint.     
     | ^  
  31 | $mat-xsmall: 'max-width: 600px';  
  32 | $mat-small: 'max-width: 960px';

这对我来说似乎很奇怪,因为 _theming.scss 文件是一个 Angular Material 文件,并且错误的位置是注释。另外,我在网络上的其他工作实现中没有看到任何以 .scss 结尾的导入语句。

我花了几个小时搜索如何向我的网站添加自定义主题...我错过了什么吗?我对 Angular 2 和 SASS 还很陌生。

PS:我已经有点困惑,是否应该将 my-theme.scss 导入 styles.css 。 Angular 文档对此只字不提,但我读到了一些评论,人们指出,这解决了他们使用自定义 Angular Material 主题的问题。

项目结构:

my-project
 |--node_modules
 | |--@angular
 |   |--material
 |     |--prebuild-themes
 |     |--_theming.scss
 |--src
 | |--app
 | | |--my-component.css | html | ts
 | | |--app.module.ts
 | |--assets
 | |--index.html
 | |--main.ts
 | |--my-theme.scss
 | |--styles.css
 |--.angular-cli.json

package.json 文件:

  "dependencies": {
    "@angular/animations": "^4.3.1",
    "@angular/cdk": "^2.0.0-beta.8",
    "@angular/common": "^4.0.0",
    "@angular/compiler": "^4.0.0",
    "@angular/core": "^4.0.0",
    "@angular/forms": "^4.0.0",
    "@angular/http": "^4.0.0",
    "@angular/material": "^2.0.0-beta.8",
    "@angular/platform-browser": "^4.0.0",
    "@angular/platform-browser-dynamic": "^4.0.0",
    "@angular/router": "^4.0.0",
    "core-js": "^2.4.1",
    "hammerjs": "^2.0.8",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4"
  },
  "devDependencies": {
    "@angular/cli": "1.2.1",
    "@angular/compiler-cli": "^4.0.0",
    "@angular/language-service": "^4.0.0",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.0.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.0.4",
    "tslint": "~5.3.2",
    "typescript": "~2.3.3"
  }

Windows 7,64 位 火狐52.2.1 Visual Studio 代码 1.14.1


这将有助于:

  1. 将主题文件名更改为_my-theme.scss
  2. 改变你的styles.css to styles.scss
  3. 将您的主题导入styles.scss文件如:

    @import './path/to/your/theme/my-theme'; // 这里不需要下划线和文件扩展名

  4. 您不需要将主题文件包含在styles: []

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2 Material 自定义主题 的相关文章

  • 具有内部表单初始值的 Angular ControlValueAccessor

    我有这个组件使用ControlValueAccessor 该组件有自己的内部表单 我找不到在哪里设置表单控件的初始值 有人能指出我正确的方向吗 import Component ChangeDetectorRef forwardRef Ng
  • 从版本 14 更新到 15 后,Angular $localize 错误

    从版本更新我们的 Angular 应用程序后14 0 4到版本15 1 3 之前也尝试过15 1 2 我们在尝试访问该应用程序时收到以下错误 Uncaught Error It looks like your application or
  • 从 Angular 4 中的 html 中删除主机组件标签

    我有一个表 我想在其中显示一个表行 它是一个组件 我还想将数据传递给该组件 table th td col 1 td td col 2 td td col 3 td th tr tr table
  • Angular 没有 NameService 提供者

    我在将类加载到 Angular 组件中时遇到问题 我已经尝试解决这个问题很长时间了 我什至尝试过将所有内容合并到一个文件中 我所拥有的是 应用程序 ts
  • 如何避免 Angular 材料中出现额外的 mat-form-field-underline

    我在查找为什么在使用组件时会出现额外的 mat form field underline 时遇到问题 我的页面使用此标记
  • 是否可以在运行时动态设置组件@Input?

    说我有一个dynamic component wrapper可以实例化任何Component传递给它的类 DRE013 DCOOKE 16 05 2017 The component to instantiate Input compone
  • 为什么 Angular 2 ngOnChanges 不响应输入数组推送

    我的角度应用程序遇到了问题 我使用输入作为数组 并在单击事件发生时将值推送到数组 但是当数组推送完成时 ngOnChanges 不会触发 有没有办法触发 ngOnChange 我的代码是 ts 文件是 Component selector
  • angular2-google-maps 自动完成功能不起作用

    我正在尝试使用 angular2 google maps 将自动完成功能添加到我的项目中 我在 AppModule 中添加 AgmCoreModule forRoot 带有库 places 然后在组件中添加自动完成代码 我仍然收到 无法读取
  • 从 Angular 2 动态表单的 API 设置值

    我正在尝试开始在 Angular 2 中创建动态表单 并且我正在使用 Angular 食谱中的设置here https angular io docs ts latest cookbook dynamic form html作为我的起点 我
  • Angular2:setTimeout仅调用一次

    我正在 Angular2 中实现需要使用的功能setTimeout My code public ngAfterViewInit void this authenticate loop private authenticate loop s
  • Angular2 + Laravel 与实时和 WebSockets

    我构建了一个应用程序 并计划与 Angular 2 和 laravel 进行实时战斗 例如 你按下 攻击 按钮 你的对手就会实时看到他的生命在下降 我的应用程序构建有 前端 角2 Backend PHP Laravel 5 2 现在我正在寻
  • 如何从 Angular 7 中的另一个组件更新视图?

    我想从导航栏刷新我的卡集 该导航栏是应用程序组件 html所以我准备了刷新 功能 当它被调用时 它会更新变量 Cards 但不会将其呈现在ngFor在 html 元素上mainView html 如果我从 html 元素调用 它会渲染更新的
  • 在 spring-boot 中设置 base-href 和 context-path - Angular 6 应用程序

    我正在构建一个 Web 应用程序 其中 UI 客户端组件是使用 Angular 6 构建的 后端 服务器端 位于 Spring boot 上 申请预计可在 http localhost 8080 FUtility 我通过在 appmodul
  • 如何让Angular2绑定innerHTML中的组件

    我想创建一个组件myApp它将把控制器上的属性中的 HTML 嵌入到其模板中 但是 其中一些 HTML 可能包含其他组件选择器 import InfoComponent from Component selector myApp templ
  • 如何通过自定义指令动态添加组件

    我想编写一个自定义指令 它将根据 div 内的某些逻辑动态添加组件 我在其中使用了自定义指令 我尝试使用 componentFactoryResolver 和 viewContainerRef createComponent 动态添加组件
  • Angular4 屏蔽输入中的字符而不更改其值

    如何屏蔽输入中除 Angular 4 中最后四个字符之外的所有字符 即显示 而不更改实际值 例如 输入文本框中的数字应类似于 1234 且值应为 7671234 使用指令 Directive selector stringHide expo
  • angular2 MdDialog 未显示为弹出窗口

    所以我尝试使用 MdDialog 来显示错误消息 不幸的是 它不是显示为弹出窗口 而是显示为页面底部的块 我需要查看或更改哪些内容才能使其正常工作 下面的代码 common modal component html h2 title h2
  • 是否可以在 Angular Material Tooltip 中包含一个列表?

    基本上我想在我的工具提示中有一个 ul 元素 我正在使用 Angular 5 以及 Angular 5 的兼容材质 帕维尔 阿加科夫 Pavel Agarkov 的评论方向是正确的 为了让事情变得简单 创建一个自定义管道来自动将文本转换为项
  • 模板解析:找不到管道

    我收到错误 模板解析错误 找不到管道 amDateFormat 这是我的app module ts import NgModule from angular core import MomentModule from angular2 mo
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden

随机推荐

  • WPF 语音气泡

    我目前正在创建一个小软件 您可以在其中创建自己的漫画 我目前正在尝试添加气泡 我所做的是 我将一个文本框放在圆角边框内 这是我的结果 现在我想添加一个指向说话的角色的箭头 我想要得到的示例 箭头的位置应由用户选择 它想围绕边界旋转 我不知道
  • Python 数值积分与辛普森法则

    我已经开始学习这本书了 计算物理练习 5 4 及其练习 我遇到了以下问题 编写一个 Python 函数 J m x 使用 N 1000 个点的辛普森规则计算 Jm x 的值 在程序中使用您的函数在单个图形上绘制贝塞尔函数 J0 J1 和 J
  • Python正则表达式:如何仅增加字符串中的一个数字?

    我有以下类型的字符串 a1 images1subimages1 folder100 hello1 png a1 images1subimages1 folder100 hello1 png a1 images1subimages1folde
  • 每小时值总和

    我有一个具有以下结构和示例数据的表 STORE ID INS TIME TOTAL AMOUNT 2 07 46 01 20 3 19 20 05 100 4 12 40 21 87 5 09 05 08 5 6 11 30 00 12 6
  • Azure 流分析 - 应用窗口翻滚时自定义“时间戳”出错

    我有一个 json 文件 如下所示 imei imei 358174069248418F imeiBinary NYF0BpJIQY8 imeiNotEncoded 358174069248418 有效 1 dataPackets msy
  • 在 C# 中对对象的 ArrayList 进行排序

    我怎样才能排序ArrayList的物体 我已经实施了IComparable排序时的界面ArrayList 但我没有得到所需的结果 我的代码示例 public class Sort IComparable public string Coun
  • 为什么 os.path.expanduser 不返回主目录?

    我正在制作一个 python 桌面应用程序 它将日志作为 csv 文件保存在 Windows 上用户的文档文件夹中 该应用程序是用 python 2 7 和 kivy 1 8 0 编写的 使用 pyinstaller 2 1 打包为 Win
  • AFNetworking 2.0 并且仅在离线时使用缓存

    当用户使用我的应用程序但失去连接或使用飞行模式时 我遇到了问题 我的应用程序服务器端没有设置任何缓存策略 目前我无法更改它 我从 AFNetworking 1 x 迁移到 2 0 现在我正在使用AFHTTPRequestOperationM
  • maxRequestLength 的最大值?

    如果我们使用 IIS 7 和 Net Framework 4 则最大值是多少maxRequestLength 最大为2097151 如果尝试设置更多会发生错误
  • ?: (urls.W005) URL 命名空间“main”不是唯一的。您可能无法反转此命名空间中的所有 URL

    我在运行时收到此错误python manage py runserver urls W005 URL 命名空间 main 不是唯一的 你可能无法 反转此命名空间中的所有 URL 我的网站 urls py from django contri
  • 如何准备/使用 docker 执行器/拉取 docker 镜像 openfoamplus/of_v1612plus_centos66?

    我正在尝试拉取并运行 docker image openfoamplus of v1612plus centos66 如下所示 我用过这个主要命令 docker container run ti cfdengine openfoam ope
  • 混合使用同一类中的已实现方法和模拟方法

    我试图模拟类的某些方法 同时保留其他方法的真实实现 现在 我确实在 stackoverflow 上找到了相关内容here 但是 所有建议的答案都没有帮助我 在大多数情况下 Lee 的答案可能很好 但在我的情况下是不合适的 因为我确实需要模拟
  • 为什么 Google 地图的地理编码器返回日文字符?

    我有一个像这样的方法 Address address new Geocoder context getFromLocation latitude longitude 5 get 0 return address getThoroughfar
  • 如何从 iText 中的 PDF 中删除空白页

    我想从使用 Java 中的 iText 库生成的 PDF 中删除空白页 我该怎么做 C 根据kalyan的要求 public static void removeBlankPdfPages string pdfSourceFile stri
  • 如何以编程方式从 Access DB 中删除已知密码?

    由于我无法控制的原因 我必须处理一个新的 Access MDB 文件 该文件每月由我编写的自动化过程下载 解密和解压缩 尽管有 PGP 加密 发件人 保险公司 仍拒绝发送不受密码保护的 MDB 不幸的是 文件下载后立即进行处理 并假定没有密
  • 动态更改innerHTML设置

    我需要使用innerHTML 动态更改每个节点上设置的值 我找到的最接近的解决方案是 Object defineProperty Element prototype innerHTML set function get value ok v
  • Ajax 调用可以在 DOM 加载之前完成吗?

    我通过 jQuery Ajax 调用抓取数据 并将其显示在页面上 我需要等待 DOM 加载和 Ajax 调用完成 然后才能使用数据将其显示在页面上 Ajax 调用能否在 DOM 加载之前完成 我只是想确定需要将操作 DOM 并使用我返回的数
  • JavaFX 鼠标位置

    我需要在我的应用程序中获取鼠标单击的 x 和 y 坐标 我通过创建一个点在下面的代码中部分解决了这个问题 但根据我在屏幕上移动应用程序窗口的位置 我不断获得不同的坐标 稍后我需要一些恒定的东西来识别某些物体 感谢您的帮助 Override
  • 理解使用 std::condition_variable 的示例

    有一个使用的例子condition variable取自cppreference com include
  • Angular 2 Material 自定义主题

    我正在使用 Angular 2 和 Angular Material 我需要创建一个自定义主题 以便为组件使用自定义颜色 我跟着角度文档 但我无法让它运行 到目前为止我做了什么 1 我创建了一个文件my theme scss import