2017-06-10 2 views
1

Basierend auf der Dokumentation, die unter gefunden wurde, habe ich versucht, die Stylesheets zu importieren, die unter den node_modules gefunden werden; dh:Angular 2 Component Styles, die css-Importe von node_modules nicht auflösen

test.component.css:

@import '[email protected]/material/core/theming/all-theme.css';

Wobei die Komponente definiert:

@Component({ 
    moduleId: module.id, 
    selector: 'app-test', 
    templateUrl: 'test.component.html', 
    styleUrls: ['test.component.css'], 
    encapsulation: ViewEncapsulation.None 
}) 
export class TestComponent { 
} 

Leider, wenn Sie auf die Seite durchsucht, es kommt, dass die ~ @ Winkel/material/core/thema/all-theme.css kann nicht gefunden werden.

Dieses Projekt wurde mit dem Angular-Cli erstellt.

Ich vermute, ich könnte in den Stilen kopieren, und verweisen Sie auf diese Weise, aber ich würde lieber die Bibliothek Abhängigkeiten trennen.

+0

Nur um sicher zu gehen, haben Sie @ angular/material installiert. Ist die Ordnerstruktur korrekt und die Datei existiert in node_modules? – Skeptor

+0

Das sieht aufgelöst aus, wenn ich von angular-cli v1.0.0-beta.28.3 auf angular/cli v1.1.2 aktualisiert habe. –

Antwort

1

Wenn Sie Stylesheet aus Knotenmodul Ordner aufnehmen möchten .. Sie es einfach hinzufügen müssen in .angular-cli.json

"styles": [ 
    "../node_modules/bootstrap/scss/bootstrap.scss" 
] 

Auch brauchen Sie nicht encapsulation:ViewEncapsulation.None hinzufügen, bis Sie Erstellen Sie Ihre HTML dynamisch mit einigen Drittanbieter-Plugin oder einige zufällige CSS hinzufügen.

Sie können immer globalen CSS verwenden, die in Ihrem .angular-cli.json enthalten sind

+0

Das ist richtig. Sie können den Stil auch in styles.css importieren. –

+0

Es sieht so aus, als würde ein Upgrade auf einen angular-cli v1.1.2 behoben werden, ohne das .angular-cli.json modifizieren zu müssen, obwohl ich das auch versucht habe. Ich finde immer noch, dass ich ViewEncapsulation.None verwenden muss, andernfalls werden die importierten Klassen nicht aufgelöst, wenn ich sie der classList des Elements hinzufüge. –

-1

Das Problem ist mit der Dateierweiterung. Sie verwenden die Erweiterung css, die das Importieren von Dateien vom anderen Speicherort nicht unterstützt, so dass Sie die Erweiterung in ändern können. In diesem können Sie die Dateien von node_modules importieren.

+0

CSS-Import wird nicht unterstützt? – Skeptor

+0

Im Webpack, wenn css eine Datei importiert, wird sie als URL interpretiert und wenn Sie scss verwenden, wird die Datei als 'style-loader' importiert. Bedeutet, dass es tatsächlich die Datei nicht nur URL lädt. –

Verwandte Themen