私は 公式ガイド に従い、次の内容のapp-theme.scss
を作成しました:
@import '~@angular/material/theming';
@include mat-core();
$candy-app-primary: mat-palette($mat-Indigo);
$candy-app-accent: mat-palette($mat-pink, A200, A100, A400);
$candy-app-warn: mat-palette($mat-red);
$candy-app-theme: mat-light-theme($candy-app-primary, $candy-app-accent, $candy-app-warn);
@include angular-material-theme($candy-app-theme);
styles.css
の内容:
@import './app-theme.scss';
ただし、コンパイル中に常に次のエラーが発生します:Module not found: Error: Can't resolve '@angular/material/theming'
。機能させるにはどうすればよいですか?
解決済み:
Angular Material 2のドキュメントでは、デフォルトでsassスタイルシートを使用していることを前提としています。これは明確に伝えられたり説明されたりすることはありません。以下の手順を使用してこの問題を解決できます。
styles.css
の名前をstyles.scss
に変更し、その内容を@import './app-theme';
に設定しますangular-cli.json
で、styles: ["styles.css"]
をstyles: ["styles.scss"]
に変更しますAngular 6 or 7
では、単にangular-material
をインストールするだけです
ng add @angular/material
このコマンドは何をしますか?ここをよく見て
angular material
、cdk
、animations
app.module.ts
への参照を追加しますmaterial-icons'
へのindex.html
参照の追加package.json
への参照が追加されます(テーマが機能しない場合は、下記のようにstyles.css/styles.scss
にインポートしてください)。以前のバージョンでは、これらの手順を手動で行っていました
Angular5+
を使用すると、1つまたは両方のimport
メソッドが機能します
@import "@angular/material/prebuilt-themes/Indigo-pink.css";
@import "~@angular/material/prebuilt-themes/Indigo-pink.css"; // in official docs
これを試して、
テーマファイル名を_app-theme.scss
に変更します
Styles.cssをstyles.scss
に変更します
次のように、テーマをstyles.scssファイルにインポートします。
@import './path/to/your/theme/app-theme'; //ここではアンダースコアとファイル拡張子は必要ありません
このプロジェクトにangularマテリアルをインストールしたことを確認しますか?node_modulesフォルダーなしでWebページのコンテンツのみをコピーでき、その場合コンパイラーがパスを見つけることができません ' node_modules/@ angular/material/theming '。
このコマンドを試してみてください。
npm install --save @angular/material @angular/cdk
それは役立つかもしれません。
提供した公式ガイドによると、テーマファイルをstyles.cssファイルにインポートするのではなく、angular-cli.jsonファイルのstyles配列に挿入する必要があります。これは次のようになります。
styles: [
"app-theme.scss",
"styles.css"
]