2017-03-28 22 views
1

です。公式guideでカスタムテーマを作成しました。角2 SCSSの素材テーマは

@import '../node_modules/@angular/material/core/theming/_all-theme'; 
@include mat-core(); 

$primary: mat-palette($mat-teal); 
$accent: mat-palette($mat-deep-orange); 
$warn: mat-palette($mat-amber); 

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

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

実際に動作します。 md-toolbarまたはmd-buttonの色を$primaryに設定できます。 しかし、コンポーネントのSCSS内のカラー変数にアクセスすることはできません。 Webstormで

:host { 
    .mat-grid-tile-header { 
    background-color: $primary; 
    } 
} 

エラー:失敗したビルド後

"Element 'primary' is resolved only by name without using of explicit imports" 

エラー: "未定義の変数"

オーケー、私は何とかそれをインポートする必要があります。しかし、私は方法を取得しません。

私はテーマをインポートしようとした

@import "../../../theme.scss"; 
    :host { 
     .mat-grid-tile-header { 
     background-color: $primary; 
     } 
    } 

Webstormでエラーが解消されたが、ビルド後の新しいエラーが登場:

Module build failed: 
undefined 
      ^
     (50: #e0f2f1, 100: #b2dfdb, 200: #80cbc4, 300: #4db6ac, 400: #26a69a, 500: #009688, 600: #00897b, 700: #00796b, 800: #00695c, 900: #004d40, A100: #a7ffeb, A200: #64ffda, A400: #1de9b6, A700: #00bfa5, contrast: (50: rgba(0, 0, 0, 0.87), 100: rgba(0, 0, 0, 0.87), 200: rgba(0, 0, 0, 0.87), 300: rgba(0, 0, 0, 0.87), 400: rgba(0, 0, 0, 0.87), 500: white, 600: white, 700: white, 800: rgba(255, 255, 255, 0.87), 900: rgba(255, 255, 255, 0.87), A100: rgba(0, 0, 0, 0.87), A200: rgba(0, 0, 0, 0.87), A400: rgba(0, 0, 0, 0.87), A700: rgba(0, 0, 0, 0.87)), default: #009688, lighter: #b2dfdb, darker: #00796b, default-contrast: white, lighter-contrast: rgba(0, 0, 0, 0.87), darker-contrast: white, "50-contrast": rgba(0, 0, 0, 0.87), "100-contrast": rgba(0, 0, 0, 0.87), "200-contrast": rgba(0, 0, 0, 0.87), "300-contrast": rgba(0, 0, 0, 0.87), "400-contrast": rgba(0, 0, 0, 0.87), "500-contrast": white, "600-contrast": white, "700-contrast": white, "800-contrast": rgba(255, 255, 255, 0.87), "900-contrast": rgba(255, 255, 255, 0.87), "A100-contrast": rgba(0, 0, 0, 0.87), "A200-contrast": rgba(0, 0, 0, 0.87), "A400-contrast": rgba(0, 0, 0, 0.87), "A700-contrast": rgba(0, 0, 0, 0.87), "contrast-contrast": null) isn't a valid CSS value. 

誰かがこの問題を解決する方法を知っています問題? ありがとうございます!

答えて

2

mat-color($primary)の機能を@angular/material/core/theming/_theming.scssから使います。それはパレットを取り込み、色を返します。

+0

お返事ありがとうございます!これは、theme.scssをインポートすると機能します。しかし、これは、各scssファイルにファイルをインポートする必要があることを意味します。あなたは一度だけそれを行う可能性を知っていますか?これははるかにクリーンになります。 – Lados

+0

残念ながら、各.scssファイルは別々にコンパイルされているので、グローバルインポートを行う方法はありません。webpackエイリアスを使用しているので、webpackがファイルを受け取ったときにエイリアスを参照して正しいパスに置き換えます。そうすることで、私の輸入品は次のようになります: '@import"〜material-theming/_theming "'。このエイリアスは、webpackの設定では次のようになります: 'alias:{'material-theming':path.resolve(__ dirname、 './node_modules/@angular/material/core/theming/')}' – DRiFTy

+0

私はレイアウトコンポーネントを持っていますこのコンポーネントのtheme.scssファイルのインポートを含む共有フォルダで、変数はすべてのscssファイルで使用できます。 共有コンポーネント内のscssファイル。 @import "../../extend-theme.scss"; .ng2-smart-row { &.selected { 背景:マット色($プライマリ、ライター、0.5)!重要; } } – Gaalvarez

関連する問題