2017-06-10 11 views
1

Angular Component Stylesのドキュメントに基づいて、node_modulesの下にあるスタイルシートをインポートしようとしていました。すなわち:角2のコンポーネントのスタイルが、node_modulesからのCSSのインポートを解決しない

test.component.css:

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

コンポーネントが定義される:ページを閲覧するとき

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

は残念ながら、それは/〜@角度ということに来ますmaterial/core/theming/all-theme.cssが見つかりません。

このプロジェクトはAngular-Cliを使用して設定されました。

私はスタイルでコピーして、その方法で参照することができますが、私はむしろライブラリの依存関係を分離したままにしたいと思います。あなたはノードモジュールフォルダから任意のスタイルシートを含める場合

+0

@ angle/materialをインストールしましたか?フォルダ構造は正しいですか?node_modulesにファイルがあります – Skeptor

+0

これは、angular-cli v1.0.0-beta.28.3からangular/cli v1.1.2にアップグレードすると解決しました。 –

答えて

1

..あなただけの.angular-cli.jsonにそれを追加する必要があります。また

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

あなたがされるまでencapsulation:ViewEncapsulation.Noneを追加する必要はありませんいくつかのサードパーティのプラグインを使用して動的にHTMLを作成するか、ランダムなCSSを追加します。

常にあなたの.angular-cli.json

+0

それは正しいです。 styles.cssのスタイルをインポートすることもできます –

+0

角度cli v1.1.2にアップグレードすると、それも試しましたが、.angular-cli.jsonを変更する必要はありませんでした。私はまだViewEncapsulation.Noneを使用する必要があることがわかります。そうでなければ、インポートされたクラスは、それらを要素のclassListに追加すると解決されません。 –

-1

問題は、ファイル拡張子であるに含まれているグローバルなCSSを使用することができます。 cssを使用していますが、他の場所からのファイルのインポートをサポートしていないため、拡張子をscssに変更することができます。これで、node_modulesからファイルをインポートできます。

+0

CSSのインポートはサポートされていませんか? – Skeptor

+0

webpackでは、CSSのインポート時にURLとして解釈され、scssを使用するとファイルは 'style-loader'としてインポートされます。実際にURLだけでなくファイルをロードすることを意味します。 –

関連する問題