An Angular 2+ wrap around Materialize library
npm install ng2-materialize
This library is an Angular 2+ wrap around Materialize library, a responsive CSS/JS framework that implements Material Design specifications from Google.
Demo and documentation : https://sherweb.github.io/ng2-materialize/
package.json file along with its dependencies: Materialize CSS and jQuery.
npm install --save ng2-materialize
`
Don't forget to include Materialize and jQuery in your application.
If you are using Angular-CLI you can follow the example below :
#### .angular-cli.json
`diff
"styles": [
"styles.scss",
+ "../node_modules/materialize-css/dist/css/materialize.min.css"
],
"scripts": [
+ "../node_modules/jquery/dist/jquery.min.js",
+ "../node_modules/materialize-css/dist/js/materialize.min.js"
],
`
#### tsconfig
`diff
{
"compilerOptions": {
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es2016",
"dom"
],
"outDir": "../out-tsc/app",
"target": "es5",
"module": "es2015",
"baseUrl": "",
"types": [
+ "jquery",
+ "materialize-css"
]
},
"exclude": [
"test.ts",
"*/.spec.ts"
]
}
`
See also Angular CLI 3rd Party Library Installation and Using MaterializeCSS with your Angular 2 Angular CLI App.
Icons
Ng2-materialize offers two "out-of-the-box" options for icons although you are free to use the library of your choice.
$3
To use Material Design Icons (community project based on Google Material Icons with lots of added icons), which is used with mz-icon-mdi directive, you will need to add the library with the following command:
`
npm install --save mdi
`
Don't forget to include Mdi library to your application.
If you are using Angular-CLI you can follow the example below :
#### .angular-cli.json
`diff
"styles": [
"styles.scss",
"../node_modules/materialize-css/dist/css/materialize.min.css",
+ "../node_modules/mdi/css/materialdesignicons.min.css"
],
`
$3
To use Material Icons (official Google Material Icons library), which is used with mz-icon directive, you will need to add the following into the tag of your index.html file:
`html
`
Animation
Some components are using advance animation transition. You need to install @angular/animations and include BrowserAnimationsModule if you want those animation to work.
`
npm install --save @angular/animations
`
`diff
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
+ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppModule } from './app.module';
@NgModule({
imports: [
+ BrowserAnimationsModule,
],
})
export class AppModule { }
`
If you don't want to install a new dependency in your application, you can include NoopAnimationsModule.
`diff
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
+ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { AppModule } from './app.module';
@NgModule({
imports: [
+ NoopAnimationsModule,
],
})
export class AppModule { }
`
Usage
You must import component module you want to use inside your module to be able to use Materialize components.
`diff
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
+ import { MzButtonModule, MzInputModule } from 'ng2-materialize';
import { HomeComponent } from './home.component';
@NgModule({
imports: [
CommonModule,
+ MzButtonModule,
+ MzInputModule,
],
declarations: [ HomeComponent ],
})
export class HomeModule { }
`
$3
We will continue to maintain this module for a period of time to allow you to migrate your existing components to the new way.
We recommend to use the new component modules when you are building new component/application.
If you still want to import only one module, you can create a separate NgModule in your application that imports all the ng2-materialize components. You will be able to include this module anywhere you like to use the components.
`
import { MzInputModule, MzValidationModule } from 'ng2-materialize';
@NgModule({
imports: [
MzInputModule,
MzValidationModule,
],
exports: [
MzInputModule,
MzValidationModule,
],
})
export class CustomMaterializeModule { }
`
Available features
Page listed in Native CCS Class will not be wrapped.
$3
* Badge
* Button
* Card
* Checkbox
* Chip
* Collapsible
* Collection
* Datepicker
* Dropdown
* Feature discovery
* Form validation
* Icon
* Input
* Modal
* Navbar
* Pagination
* Parallax
* Progress
* Radio-Button
* Select
* Sidenav
* Spinner
* Switch
* Tab
* Textarea
* Timepicker
* Toast
* Tooltip
$3
* Media
Demo application
A demo application is available at https://sherweb.github.io/ng2-materialize/, or refer to the ./demo-app` folder and its README.