2016-07-11 37 views
7

W kątowa 2, gdy definiujemy komponent możemy określić styleUrls własności do dekoratora, który wskazuje na zbiór arkuszy stylów, które należy stosować do części:Jak korzystać z SASS dla komponentów w stylu Angular 2?

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

Teraz co zrobić, jeśli chcę napisać te style z SASS?

Wiem, że będę musiał użyć Gulp lub Grunt, aby przenieść arkusze stylów SCSS na zwykły CSS. Ale to sprawia, że ​​jestem zdezorientowany, w jaki sposób poprawnie wskażemy Angularowi odpowiednie arkusze stylów.

Jak mogę zorganizować ten przepływ pracy przy użyciu SASS z Gulp/Grunt razem z Angular 2? Jak używać SASS do pisania stylów komponentów Angular 2?

+0

Jeśli przez cha nce używasz [angular-cli] (https://cli.angular.io/) wszystko, co musisz zrobić, to zmienić nazwę pliku i pozostawić wszystkie inne odniesienia w spokoju, a kątowe-cli zajmie się resztą –

+1

Znalazłem, jak to działa. Po prostu przeczytaj moją odpowiedź poniżej :) – MaximeBernard

Odpowiedz

0

Można użyć .scss w składniku jak to-

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

Zobacz, czy to pomaga.

1

Po wykonaniu tej czynności pod numerem wiki otrzymałem numer Error: Uncaught (in promise): Expected 'styles' to be an array of strings, który rozwiązałem, używając tego answer.

końcowy roztwór jest tutaj:

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: (część)

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

Czy możesz pls udostępniać webpack.conf.js –

+0

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

+0

kiedy używam: styles: [String (require ('./ home.component. scss '))], następnie rozpoczyna wyszukiwanie pliku home.component.scss.js. stąd nie znaleziono 404. Dlaczego szuka pliku scss.js? –

0

Używam go w ten sposób:

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

wiersza poleceń wewnątrz folderu projektu, gdzie istniejące package.json jest: npm zainstalować węzeł-Sass Sass-ładowarka raw-ładowarka flagą --save-dev

W webpack.common.js, szukać „zasad :”i dodać ten przedmiot do końca tablicy reguł (nie zapomnij dodać przecinek na końcu poprzedniego obiektu):

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

Następnie w części:

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