css - ¿Cómo usar SASS para el estilo de los componentes en Angular 2?
gulp-ruby-sass (4)
En Angular 2 cuando definimos un componente, podemos especificar una propiedad styleUrls
al decorador que apunta a un conjunto de hojas de estilo para aplicar al componente:
@Component({
selector: ''the-app''
templateUrl: ''templateFile.html'',
styleUrls: [''componentStyles.css'', ''moreComponentStyles.css'']
})
export class TheAppComponent {}
Ahora, ¿y si quiero escribir estos estilos con SASS?
Sé que necesitaría usar Gulp o Grunt para transpilar las hojas de estilo SCSS a CSS simple. Pero esto me confunde sobre cómo apuntar correctamente a Angular a las hojas de estilo correctas.
¿Cómo podría organizar este flujo de trabajo de usar SASS con Gulp / Grunt junto con Angular 2? ¿Cómo usar SASS para escribir los estilos de componentes de Angular 2?
Puedes usar .scss en Component como este-
styles: [require(''normalize.css''), require(''./app.scss'')],
Vea si esto ayuda.
Lo estoy usando de esta manera:
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 {}
Línea de comando dentro de la carpeta del proyecto donde está el package.json existente: npm install node-sass sass-loader raw-loader --save-dev
En webpack.common.js, busque "rules:" y agregue este objeto al final de la matriz de reglas (no olvide agregar una coma al final del objeto anterior):
{
test: //.scss$/,
exclude: /node_modules/,
loaders: [''raw-loader'', ''sass-loader''] // sass-loader not scss-loader
}
Luego en tu componente:
@Component({
styleUrls: [''./filename.scss''],
})
Después de seguir esta wiki , recibí un Error: Uncaught (in promise): Expected ''styles'' to be an array of strings
que resolví con esta respuesta .
La solución final está aquí:
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 : (parte de él)
{
test: //.(css|scss)$/,
loaders: [
''style'',
''css'',
''sass'',
''postcss''
]
},