当前位置: 首页 > 知识库问答 >
问题:

角度 2 材质自定义主题

龚宏壮
2023-03-14

我正在将Angular 2与角度材料一起使用,我需要创建自定义主题,以便为组件使用自定义颜色。我遵循了有角度的文档,但我无法让它运行。

到目前为止我所做的:

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/材料/_theming”,“../node_modules/@angular/材料/_theming“,”~@angular/材料/主题“,”../node_modules/@angular/材料/主题“...在我的主题.在Angular Docs中,他们使用“主题”作为位置,但我在某处读到,Angular材质将文件移动到“_theming”,这也在我的污垢器结构中发现。

当我使用路径“.../node_modules/@角/材料/_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文件是一个角度材质文件,错误的位置是注释。此外,我没有在Web上的其他工作实现中看到任何以.scss结尾的导入语句。

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

PS:我已经有点困惑了,如果我是否应该将我的主题.scss导入到样式中.css。Angular Docs对此只字未提,但我阅读了一些评论,人们指出,这解决了他们使用自定义角度材料主题的问题。

项目结构:

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

包裹。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位Firefox 52.2.1 Visual Studio代码1.14.1

共有2个答案

濮阳耀
2023-03-14

你可能需要将应用更改为使用 sass。在角度-cli 文件上,更改以下行:

"styleExt": "css",

收件人:

"styleExt": "scss",

然后将所有 css 文件重命名为 scss。把你的我的他们放在那里。

重命名后,在cli上进行更改

"styles": [
   "styles.scss",
   remove this line =>"my-theme.scss"
]

然后在“资源”文件夹中创建名为“样式”的文件夹。

所以它会是这样的

|--assets
   |--styles
      |--_my-theme.scss

然后是风格。scss文件导入如下:

@import "~assets/styles/_my-theme.scss";
张嘉
2023-03-14

这将有助于:

> < li >将您的主题文件名更改为< code>_my-theme.scss < li >将您的< code>styles.css更改为< code>styles.scss < li>

将您的主题导入< code>styles.scss文件,如下所示:

@导入'/路径/to/your/theme/my-theme';//这里不需要下划线和文件扩展名

您不需要将主题文件包含在样式中:[]

 类似资料:
  • > 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?

  • 我有一个mat select,其中的选项是数组中定义的所有对象。我试图将该值设置为其中一个选项的默认值,但是当页面呈现时,该值处于选中状态。 我的typescript文件包含: 我的HTML文件包含: 我已尝试将和

  • 我创建了一个新的angular5项目,在该项目上,我将angular material用于前端组件()。到目前为止一切都很好,但主要的问题是如何添加一个自定义主题。我没有在此项目上使用scss编译器,所以我所做的是将所有css组件导入到style.css中,如 问题是我不知道如何修改预构建的主题的底色,或者为我的主题生成另一个带有其他底色的css。如果有人能帮我,我会非常感激的!

  • 我想在进行某些处理时显示一个进度条覆盖图。我可以计算完成百分比,所以我想使用一个确定的进度条。对于覆盖部分,我想使用一个对话框。基本上,我想做这里要做的事情(Angular 2 Material Progress微调器:显示为叠加),但我不需要微调器。因此,我的组件将如下所示: 模板: 元件: 然后我使用这个组件的代码如下: 我发现了这一点(如何将数据传递到angular material 2的对

  • 我试图创建自己的自定义angular material组件,该组件能够使用控件。 除此之外,我希望该控件使用指令。 我的目的只是创建一个更好看的组件,该组件包含一个集成的clear按钮和自定义css箭头,如下图所示。我使用标准组件成功地获得了它,并添加了我想要的内容,但现在我想将它导出到泛型组件中。 null 即使正确选择了值,我的窗体也无效。 选择某个选项后,占位符自身设置不正确。 自动完成筛选