2016-11-03 8 views
1

私はangass2アプリケーションでカラーテーマ機能を構築しようとしています。マイheader.component.scssファイルは次のとおりです。角度アプリケーションでのSASS/SCSSの使用方法

$head-color: #f11; 
h1{ 
    color: $head-color; 
} 

私はルートディレクトリ内のファイルwebpack.common.jsを作成し、その中で次のように追加しました:

const webpack = require('webpack'); 
module.exports = { 
    module: { 
    loaders: [ 
     { 
     test: /\.scss$/, 
     exclude: /node_modules/, 
     loaders: ['raw-loader', 'sass-loader'] 
     } 
    ] 
    } 
}; 

私のヘッダーがデフォルトで表示されています黒色。しかし、私はscssファイルを次のように赤色で表示するように変更します。

h1{ 
    color: #f11; 
} 

したがって、基本的に変数に動的な値を割り当てることはできません。誰もがこのplsの株式に関するいくつかのアイデアを持っている。 TIA

+0

sassはビルドツールを使用してコンパイルできます。あなたは何を使っていますか? – Manish

+0

Webpackはコンパイルできません。コンパイル中にエラーが発生しています。 https://github.com/sass/node-sass/releases/tag/v3.10.1 – Manish

+0

いいえ詳細については、このリンクを参照してください https://angular.io/docs/ts/latest/guide/webpack .html – Manish

答えて

2

styleUrlsを使用する代わりに、スタイルを使用してファイルを文字列に変換します。

styles: [require('./header.component.scss').toString()] 

あなたのwebpack設定では、多くのローダーが必要だと思います。私はあなただけ

'raw-loader!sass-loader' 

私の現在の設定を持つことができるはずと信じている:

{ 
    test: /\.scss$/, 
    exclude: /node_modules/, 
    loader: 'raw-loader!postcss-loader!sass-loader' 
}, 
+0

私はこれを試してみます。 @Joey index.htmlファイルにwebpack.common.jsを含める必要がありますか? –

+0

あなたは何を意味するのか正確には分かりません。それがバンドルの場合、webpackはyesよりも出力されます。 –

+0

Joeyは、私が使用するときにconfigファイル –

1

あなたは

styles: [ String(require('./header.component.scss')) ]によってStyleUrls代わり

Stylesの変更styleUrls: ['app/header/header.component.scss']を使用しているが、よりを参照してください。 https://stackoverflow.com/a/38349028/689429

「ローダー:」webpack.common.jsで npm install node-sass sass-loader raw-loader --save-dev

を検索、:

は、プロジェクトフォルダ内の必要な

+0

私はそれを試みたが、それは私にエラーを与えた。更新された質問が表示されます。 –

+0

質問が更新されました! –

1

コマンドラインは、既存のpackage.jsonがどこにある場合は、あなたのエラーを更新しての最後にこのオブジェクトを追加しますローダー配列(前のオブジェクトの末尾にカンマを追加することを忘れないでください):

{ 
    test: /\.scss$/, 
    exclude: /node_modules/, 
    loaders: ['raw-loader', 'sass-loader'] // sass-loader not scss-loader 
} 

その後、あなたのコンポーネントで:

@Component({ 
    styleUrls: ['./filename.scss'], 
}) 

グローバルCSSのサポートをしたい場合は、トップレベルのコンポーネント(おそらくapp.component.ts)にカプセル化を削除し、SCSSが含まれています。私自身のプロジェクトで

import {ViewEncapsulation} from '@angular/core'; 

@Component({ 
    selector: 'app', 
    styleUrls: ['./bootstrap.scss'], 
    encapsulation: ViewEncapsulation.None, 
    template: `` 
}) 
class App {} 
0

を、これは私が使用したものです。

フォームautomobile.component.ts

@Component({ 
    selector: 'form-automobile', 
    templateUrl: './form-automobile.component.html', 
    styleUrls: ['./form-automobile.component.scss'], 
}) 

フォームautomobile.component.scss

$myuglycolor: lime; 

label { 
    width: 100%; 
    background-color: $myuglycolor 
} 

webpack.config.common。js

{ 
    // Load component styles here. When loaded with styleUrls in component, array of string of styles is expected. 
    test: /\.scss$/, 
    exclude: /node_modules/, 
    loader: ['css-to-string-loader','css-loader','sass-loader'] 
} 
関連する問題