2016-07-11 44 views
7

bileşene uygulanacak: ArtıkAngular 2'de bileşen stili için SASS nasıl kullanılır? Biz bileşeni tanımlarken biz stil kümesine işaret dekoratör bir <code>styleUrls</code> özelliği belirtebilirsiniz 2 Eğik olarak

@Component({ 
    selector: 'the-app' 
    templateUrl: 'templateFile.html', 
    styleUrls: ['componentStyles.css', 'moreComponentStyles.css'] 
}) 
export class TheAppComponent {} 

, ben bu stilleri yazmak istiyorum ne olur SASS ile?

SCSS stil sayfalarını düz CSS'ye aktarmak için Gulp veya Grunt kullanmam gerekeceğini biliyorum. Ancak bu, Angular'ı doğru stil sayfalarına doğru şekilde nasıl göstereceğimiz konusunda kafamı karıştırdı.

SASS'i Gulp/Grunt ve Angular 2 ile birlikte kullanma iş akışını nasıl organize edebilirim? Angular 2 bileşenlerinin stillerini yazmak için SASS nasıl kullanılır?

+0

Eğer" ve kurallar dizinin sonuna bu nesneyi eklemek (önceki nesnenin sonuna bir virgül eklemek için unutmayın) cha tarafından nce [angular-cli] (https://cli.angular.io/) kullanmanız gereken tek şey, dosya ismini yeniden adlandırmak ve diğer tüm referansları tek başına bırakmak ve geri kalanı ise –

+1

Bu işi nasıl yapacağımı buldum. Sadece aşağıdaki cevabı okuyun :) – MaximeBernard

cevap

0

Sen bu yardımcı olur bak bu-

styles: [require('normalize.css'), require('./app.scss')], 

gibi Bileşen .scss kullanabilirsiniz.

1

Bu wiki izledikten sonra, bu answer kullanarak çözdüğüm bazı Error: Uncaught (in promise): Expected 'styles' to be an array of strings var.

Nihai çözelti, burada:

home.component.ts:

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

@Component({ 
    selector: 'home', 
    template: require('./home.component.html'), 
    styles: [ String(require('./home.component.scss')) ] 
}) 

export class HomeComponent { } 

webpack.conf.js: (bunun bir parçası)

{ 
    test: /\.(css|scss)$/, 
    loaders: [ 
     'style', 
     'css', 
     'sass', 
     'postcss' 
    ] 
    }, 
+0

webpack.conf.js –

+0

https://gist.github.com/Maximebpro/9457d3429d6848c5d669f0ada99a60f1 – MaximeBernard

+0

kullandığımda: styles: [String (required. ''/Home.component. scss '))] sonra home.component.scss.js dosyasını aramaya başlar. bu nedenle 404 vermez. Neden scss.js dosyası için görünüyor? –

0

Bu şekilde kullanıyorum:

Mevcut package.json olan proje klasörünün içindeki
import {Component} from "@angular/core"; 

// for webpack 
require('./footer.scss'); 

@Component({ 
    selector: 'footer', 
    templateUrl: 'app/footer/footer.html', 
    styleUrls: ['app/footer/footer.scss'], 
}) 
export class FooterComponent {} 
0

Komut satırı: npm yüklemek düğüm-küstahlık

webpack.common.js ise

, "kuralların için arama --save-dev küstahlık-yükleyici ham-yükleyici : sizin bileşende Sonra

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

:

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