Angular Material Designをインストールしました。今、私はこれをapp.module.ts
ファイルに追加しようとしています:
import { MaterialModule } from '@angular/material';
セクションimports: []
で明確にする必要があるものすべてのマテリアルエンティティをロードします。
試してみました:imports: ['MaterialModule']
が廃止されました
MaterialModuleはバージョン2.0.0-beta.3で減価償却され、バージョン2.0.0-beta.11で完全に削除されました。詳細は CHANGELOG をご覧ください。重大な変更を行ってください。
変更の破壊
CHANGELOG をご覧ください。さらに回答が得られます!
以下に示す例cmd
npm install --save @angular/material @angular/animations @angular/cdk
npm install --save angular/material2-builds angular/cdk-builds
「app」フォルダー内にファイル(material.module.ts)を作成します
import { NgModule } from '@angular/core';
import {
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
} from '@angular/material';
@NgModule({
imports: [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
],
exports: [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
]
})
export class MaterialModule {}
app.module.tsでインポート
import { MaterialModule } from './material.module';
コンポーネントのHTMLファイル
<div>
<mat-toolbar color="primary">
<span><mat-icon>mood</mat-icon></span>
<span>Yay, Material in Angular 2!</span>
<button mat-icon-button [mat-menu-trigger-for]="menu">
<mat-icon>more_vert</mat-icon>
</button>
</mat-toolbar>
<mat-menu x-position="before" #menu="matMenu">
<button mat-menu-item>Option 1</button>
<button mat-menu-item>Option 2</button>
</mat-menu>
<mat-card>
<button mat-button>All</button>
<button mat-raised-button>Of</button>
<button mat-raised-button color="primary">The</button>
<button mat-raised-button color="accent">Buttons</button>
</mat-card>
<span class="done">
<button mat-fab>
<mat-icon>check circle</mat-icon>
</button>
</span>
</div>
グローバルcss 'style.css'を追加します
@import 'https://fonts.googleapis.com/icon?family=Material+Icons';
@import '~@angular/material/prebuilt-themes/Indigo-pink.css';
コンポーネントのCSS
body {
margin: 0;
font-family: Roboto, sans-serif;
}
mat-card {
max-width: 80%;
margin: 2em auto;
text-align: center;
}
mat-toolbar-row {
justify-content: space-between;
}
.done {
position: fixed;
bottom: 20px;
right: 20px;
color: white;
}
出力が得られなかった場合は、以下の命令を使用してください
上記のインターフェース(material.module.ts)の代わりに、app.module.tsでも以下のコードを直接使用できます。
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MdButtonModule, MdCardModule, MdMenuModule, MdToolbarModule, MdIconModule, MatAutocompleteModule, MatInputModule,MatFormFieldModule } from '@angular/material';
この場合、インポートしたくない
import { MaterialModule } from './material.module';
app.module.ts内
all Materialモジュールをインポートする場合は、独自のモジュール、つまりmaterial.module.ts
を作成し、次のようなことを行います。
import { NgModule } from '@angular/core';
import * as MATERIAL_MODULES from '@angular/material';
export function mapMaterialModules() {
return Object.keys(MATERIAL_MODULES).filter((k) => {
let asset = MATERIAL_MODULES[k];
return typeof asset == 'function'
&& asset.name.startsWith('Mat')
&& asset.name.includes('Module');
}).map((k) => MATERIAL_MODULES[k]);
}
const modules = mapMaterialModules();
@NgModule({
imports: modules,
exports: modules
})
export class MaterialModule { }
次に、モジュールをapp.module.ts
にインポートします
MaterialModule
は、開発者が使用するもののみをアプリケーションにインポートし、バンドルサイズを改善することを目的として、betaバージョンで廃止されました。
開発者には現在2つのオプションがあります。
MyMaterialModule
を作成します。これは、アプリケーションに必要なコンポーネントをインポート/エクスポートし、アプリケーション内の他の(機能)モジュールによってインポートできます。以下を例に取ります( 素材ページ から抽出)
最初のアプローチ:
import {MdButtonModule, MdCheckboxModule} from '@angular/material';
@NgModule({
imports: [MdButtonModule, MdCheckboxModule],
exports: [MdButtonModule, MdCheckboxModule],
})
export class MyOwnCustomMaterialModule { }
その後、このモジュールを任意のモジュールにインポートできます。
2番目のアプローチ:
import {MdButtonModule, MdCheckboxModule} from '@angular/material';
@NgModule({
...
imports: [MdButtonModule, MdCheckboxModule],
...
})
export class PizzaPartyAppModule { }
これで、すべてのコンポーネントでそれぞれの材料コンポーネントを使用できますdeclared inPizzaPartyAppModule
以下に言及する価値があります。
BrowserAnimationsModule
をメインモジュールにインポートする必要があります@angular/cdk
をpackage.json
(材料依存関係)に追加する必要がありますBrowserModule
の後に常に材料モジュールをインポートします。どちらの方法を使用する場合でも、インポート順序はNgModuleにとって重要なので、AngularのBrowserModuleの後にAngular Materialモジュールをインポートしてください。
ステップ1
yarn add @angular/material @angular/cdk @angular/animations
ステップ2-すべてのマテリアルUIモジュールを含む新しいファイル(/myApp/src/app/material.module.ts)を作成します(ショートカットはありません。個々のモジュールを1つずつ含める必要があります)
import { NgModule } from '@angular/core';
import {
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
} from '@angular/material';
@NgModule({
imports: [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
],
exports: [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
]
})
export class MaterialModule {}
ステップ3-新しく作成したモジュールをインポートしてapp.module.tsに追加します
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { MaterialModule } from './material.module'; // material module imported
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
MaterialModule // MAteria module added
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }