Dans ce tutoriel, je vais vous présenter le Material Design dans Angular, puis nous verrons comment créer une application angulaire simple avec une interface utilisateur construite à partir de divers composants de matériau angulaire.
Les frameworks basés sur Angular, React et Vue.js ont vu un nombre croissant de collections de composants UI préconstruites devenir disponibles. L'utilisation de telles collections peut aider les développeurs à créer rapidement des applications d'apparence professionnelle.
Conception matérielle
Material Design (nom de code Quantum Paper ) est un langage visuel qui peut être utilisé pour créer des expériences numériques. Il s'agit d'un ensemble de principes et de directives pour les plates-formes et dispositifs d'interactivité, de mouvement et de composants qui simplifient le processus de conception des équipes.
Les composants matériels vous permettent de créer des interfaces utilisateur professionnelles avec des fonctionnalités de modularité et de personnalisation. 19659006] Introduction au matériel angulaire
Le matériel angulaire est la mise en application des principes et des directives de conception matérielle pour l'angulaire. Il contient divers composants de l'interface utilisateur, tels que:
- contrôles de formulaire (entrée, sélection, case à cocher, sélecteur de date et curseurs, etc.),
- modèles de navigation (menus, sidenav et barre d'outils)
- , tabs et listes)
- buttons
- indicateurs (barres de progression et spinners)
- popups et modals
- tables de données avec en-têtes et pagination etc.
Conditions requises
Avant de pouvoir continuer avec ce tutoriel , vous devez vous assurer que vous avez une machine de développement avec Node (6.9.0+) et NPM (3+) installé.
Vous devez également installer l'interface CLI Angular. Si ce n'est pas le cas, lancez simplement la commande suivante dans votre terminal ou dans l'invite de commande:
npm install -g @ angular / cli
Créer le projet avec l'interface CLI angulaire
Créons maintenant le projet Angular en utilisant l'interface CLI angulaire. Il suffit d'exécuter la commande suivante:
ng new angularmaterialdemo
Vous pouvez ensuite servir votre application en exécutant:
cd angularmaterialdemo
ng servir
L'application sera en cours d'exécution à http: // localhost: 4200
.
Puisque nous allons démontrer différents composants de matériau angulaire, nous devons créer quelques composants angulaires et configurations de routage pour une simple application de démonstration, alors allez-y et utilisez l'interface de ligne de commande pour générer les composants:
ng g login
ng g composant CustomerList
ng g composant CustomerCreate
Ensuite, ouvrez src / app / app.module.ts
et ajoutez la configuration du routeur:
/*...*/
importer {RouterModule, Routes} à partir de '@ angular / router';
/*...*/
const appRoutes: Routes = [
{ path: 'customer-list', component: CustomerListComponent },
{ path: 'customer-create', component: CustomerCreateComponent },
{
path: 'login',
component: LoginComponent
},
{ path: '',
redirectTo: '/login',
pathMatch: 'full'
},
];
Premiers pas avec le matériau angulaire
Maintenant que nous avons une application basique, commençons par installer Angular Material et ses différentes dépendances pour activer les différentes fonctions telles que les gestes et les animations.
Installation de Angular Material et Angular CDK
Commençons par installer Angular Material et Angular CDK à partir de npm.
Retournez à votre terminal et exécutez la commande suivante:
npm install --save @ angular / material @ angular / cdk
Ajout de HammerJS pour le support de gestes
Des composants tels que mat-slide-toggle
mat-slider
et matTooltip
nécessitent le HammerJS bibliothèque pour le support des gestes, vous devez donc l'installer pour obtenir toutes les fonctionnalités de ces composants. Exécutez simplement la commande suivante dans votre terminal:
npm install --save hammerjs
Ensuite, ouvrez src / main.js
(le point d'entrée de votre application) et importez hammerjs
import 'hammerjs';
Ajouter un thème
Angular Material a un tas de thèmes pré-construits. Pour utiliser un thème, il suffit de l'importer dans styles.css
:
@import "~@angular/material/prebuilt-themes/indigo-pink.css";
Vous pouvez trouver plus d'informations sur les thèmes dans ce guide .
Ajout d'icônes matérielles angulaires
Le matériau angulaire est livré avec un composant mat-icon
pour les icônes, de sorte que vous Vous devez charger la police d'icône avant de pouvoir l'utiliser.
Ajoutez la balise suivante à votre fichier index.html
:
Utilisation d'animations avec des composants de matériau angulaire
La dernière chose est l'activation des animations . Certains composants reposent sur le module d'animations angulaires pour les transitions avancées, vous devez donc installer le module @ angular / animations
et inclure le BrowserAnimationsModule
dans la configuration de votre module d'application.
revenez à votre terminal et exécutez la commande suivante:
npm install --save @ angular / animations
Ensuite, ouvrez src / app / app.module.ts
et ajoutez le code suivant:
/ * ... * /
importer {BrowserAnimationsModule} à partir de '@ angular / platform-browser / animations';
@NgModule ({
/*...*/
importations: [
BrowserModule,
BrowserAnimationsModule,
],
})
classe d'exportation AppModule {}
Importation de composants de matériau angulaire
Avant de pouvoir utiliser n'importe quel composant de matériau angulaire, vous devez importer son module. Chaque composant a son propre module, vous ne pouvez donc inclure que les composants que vous allez utiliser.
Une autre approche consiste à créer un module séparé et à importer tous les composants angulaires dont vous avez besoin, puis à simplement inclure ce module dans votre module. module d'application.
Alors allez-y et créez un fichier src / app / material.module.ts
puis ajoutez le contenu suivant:
import {NgModule} from '@ angular / core';
importer {MatNativeDateModule, MatSnackBarModule, MatIconModule, MatDialogModule, MatButtonModule, MatTableModule, MatPaginatorModule, MatSortModule, MatTabsModule, MatCheckboxModule, MatToolbarModule, MatCarte, MatCardModule, MatFormField, MatFormFieldModule, MatProgressSpinnerModule, MatInputModule} à partir de '@ angular / material';
importer {MatDatepickerModule} à partir de '@ angular / material / datepicker';
importer {MatRadioModule} à partir de '@ angular / material / radio';
importer {MatSelectModule} à partir de '@ angular / material / select';
importer {MatSliderModule} à partir de '@ angular / material / slider';
importer {MatDividerModule} à partir de '@ angular / material / divider';
@NgModule ({
importations: [MatTabsModule,MatDividerModule,MatSliderModule,MatSelectModule,MatRadioModule,MatNativeDateModule,MatDatepickerModule,MatSnackBarModule,MatIconModule,MatDialogModule,MatProgressSpinnerModule,MatButtonModule,MatSortModule,MatTableModule,MatTabsModule, MatCheckboxModule, MatToolbarModule, MatCardModule, MatFormFieldModule, MatProgressSpinnerModule, MatInputModule, MatPaginatorModule],
les exportations: [MatTabsModule,MatDividerModule,MatSliderModule,MatSelectModule,MatRadioModule,MatNativeDateModule,MatDatepickerModule,MatSnackBarModule,MatIconModule,MatDialogModule,MatProgressSpinnerModule,MatButtonModule,MatSortModule, MatCheckboxModule, MatToolbarModule, MatCardModule,MatTableModule,MatTabsModule, MatFormFieldModule, MatProgressSpinnerModule, MatInputModule, MatPaginatorModule],
})
classe d'exportation MyMaterialModule {}
Ensuite, incluez ce module dans src / app / app.module.ts
:
import {MyMaterialModule} à partir de './material.module';
/*...*/
@NgModule ({
/*...*/
importations: [
/*...*/
MyMaterialModule,
],
/*...*/
})
classe d'exportation AppModule {}
Voilà: vous pouvez maintenant utiliser les composants Angular Material importés dans votre application Angular
Créer l'interface utilisateur de l'application
Vous avez déjà créé les composants de l'application et ajouté la configuration du routeur. Construisons maintenant l'interface utilisateur pour les différents composants en utilisant les composants Angular Material
Construire l'interface utilisateur pour AppComponent
Allez-y et ouvrez src / app / app.component.html
puis ajoutez: [19659008] une barre d'outils Material avec trois boutons Material ( mat-button
) pour les liens vers les composants de l'application

Clients
Créer un client
Connexion
En ajoutant du style, voici à quoi ressemble la barre d'outils:
Pour créer une barre d'outils, utilisez le composant vous créez une ou plusieurs lignes dans la barre d'outils en utilisant le composant .
Notez que nous avons importé les modules MatToolbarModule
et MatButtonModule
de @ angular / material
dans le material.module.ts
.
Vous pouvez également utiliser d'autres éléments de navigation tels que menus et encadrés . Construction de l'interface utilisateur pour le composant de connexion
Après avoir créé l'interface utilisateur du composant racine de notre application, créons l'interface utilisateur du composant de connexion.
Ouvrir src / app / login / login.component.html
et ajoutez le code HTML suivant. Ajoutez une carte Matériel angulaire pour contenir le formulaire de connexion:
Connexion
Un composant sert de conteneur à objet unique pour le texte, les photos et les actions. Trouvez plus de détails sur les cartes des documents .
Ensuite, dans la section "contenu" de la carte, ajoutez le formulaire HTML:
Ajoutons maintenant deux entrées pour obtenir le nom d'utilisateur et le mot de passe de l'utilisateur:
De nombreux composants de matériau angulaire doivent être enveloppés dans un composant pour avoir des styles de champs de texte communs tels que le soulignement, l'étiquette flottante et les messages d'indice.
Ce sont les composants qui sont conçu pour être enveloppé à l'intérieur :
Enfin, dans la section actions de la carte, ajoutons un bouton Matériau angulaire pour l'action de connexion:
Pour créer un bouton Matériau angulaire, il suffit d'utiliser des éléments HTML et
natifs et d'ajouter des attributs matériels tels que
bouton mat
et mat-raised-button
. Pour plus de détails, consultez les documents
Voici à quoi ressemble le formulaire de connexion:
Si le login est réussi () : demo, password: demo ), l'utilisateur sera redirigé vers le composant CustomerList . Sinon, l'utilisateur recevra un message d'erreur: "Vos informations de connexion sont incorrectes!"
Créer la boîte de dialogue d'erreur modale
MatDialog
peut être utilisé pour créer et ouvrir des boîtes de dialogue modales. La boîte de dialogue nécessite le chargement d'un composant, donc créez d'abord un composant Angular qui affiche le message d'erreur qui est passé.
Créez src / app / error.component.ts
puis ajoutez le code suivant:
import {Component, Inject, Injectable} à partir de '@ angular / core';
importer {MatDialogRef, MAT_DIALOG_DATA, MatDialog} à partir de '@ angular / material';
@Composant({
templateUrl: 'error.component.html'
})
classe d'exportation ErrorComponent {
constructeur (private dialogRef: MatDialogRef @Inject (MAT_DIALOG_DATA) données publiques: any) {
}
public closeDialog () {
this.dialogRef.close ();
}
}
Ce composant sera créé et ouvert avec MatDialog
afin qu'il puisse injecter MatDialogRef
qui fournit un handle sur le dialogue ouvert et peut être utilisé pour fermer le dialogue et recevoir des notifications quand le dialogue se ferme. (La méthode closeDialog ()
utilise cette référence pour fermer la boîte de dialogue.)
Notre composant d'erreur a besoin d'un moyen d'afficher le message d'erreur pour l'utilisateur. (Le message sera transmis lorsque le composant est ouvert en utilisant la méthode ouverte MatDialog
.) Vous pouvez accéder aux données dans votre composant de dialogue en utilisant le jeton d'injection MAT_DIALOG_DATA
qui peut être importé de '@ angular / material'
puis injecté dans le composant en utilisant @Inject ()
.
Ensuite, créez src / app / error.component.html
et ajoutez le code suivant:
Erreur
{{data.message}}
Nous utilisons beaucoup de directives disponibles pour structurer les composants de dialogue:
-
mat-dialog-title
: utilisé pour le titre du dialogue, et doit être appliqué aux éléments de titre
[19659112] etc.
-
-
Suivant , ouvrez src / app / app.module.ts
et ajoutez ce composant au module:
@NgModule ({
déclarations: [
/*...*/
ErrorComponent
],
importations: [/*...*/
],
entryComponents: [ErrorComponent],
/*...*/
})
classe d'exportation AppModule {}
Ajoutons maintenant la méthode login ()
(pour déclencher le dialogue d'erreur) au LoginComponent
:
import {Component, OnInit} de '@ angular / core' ;
importer {MatDialog, MatDialogRef} à partir de '@ angular / material';
/ * ... * /
@Composant({
/ * ... * /
})
classe d'exportation LoginComponent {
nom d'utilisateur public: string = "";
mot de passe public: string = "";
constructeur (boîte de dialogue privée: MatDialog, routeur privé: Routeur) {}
s'identifier(){
if (this.username === "demo" && this.password === "demo")
{
this.router.navigate (['customer-list']);
}
autre
{
this.dialog.open (ErrorComponent, {data: {
message: "Vos informations de connexion sont incorrectes!"
}});
}
}
}
Nous injectons simplement le composant MatDialog
et l'utilisons pour ouvrir une boîte de dialogue (si les informations d'identification de l'utilisateur ne sont pas correctes) avec le composant ErrorComponent
et un objet config contenant les données sera passé. La méthode open ()
renvoie une instance de MatDialogRef
.
Ceci est une capture d'écran du dialogue d'erreur:
Vous trouverez plus d'informations sur les boîtes de dialogue des documents .
Construction de l'interface utilisateur pour le composant CustomerList
Pour le composant CustomerList
nous utiliserons différents Composants de matériau angulaire, le plus important:
Ouvrir src / app / customer-list / customer-list.component.html
et ajouter le balisage suivant:
la classe mat-elevation-z8
est une classe d'élévation de matériau angulaire qui vous permet d'ajouter une séparation entre les éléments le long de l'axe z. Vous pouvez trouver plus de détails à partir de ce lien .
Ajout d'un spinner de chargement
Nous utilisons pour afficher un spinner lorsque des données sont encore en cours de chargement, que nous simulons en utilisant Fonction setTimeout ()
:
Si la variable de chargement
équivaut à true
la propriété d'affichage CSS
reçoit la valeur du bloc
. Sinon, il est assigné aucun
ce qui le fait disparaître.
Vous devez ajouter une variable de chargement à la classe de composant, qui prend initialement une valeur de true
. chargement = vrai;
/*…*/
constructeur () {}
ngOnInit (): void {
setTimeout (() => {
this.loading = faux;
}, 2000);
/*…*/
Ajout d'une table de données avec une source de données
Nous créons ensuite une table de données Material en utilisant qui s'affiche uniquement si en charge
est égal à false
:
La table de données prend une propriété dataSource
utilisée pour fournir des données pour la table. Vous pouvez simplement passer un tableau de données à la table, mais pour les cas d'utilisation réels, vous devez utiliser une source de données avancée telle que MatTableDataSource
fourni par Angular Material, qui encapsule la logique des opérations avancées telles que la pagination. , tri et filtrage:
classe d'exportation CustomerListComponent implémente OnInit {
clients: client [] = [
{ id:1, name:'Customer 001',job:'Programmer'},
/*...*/
];
dataSource = new MatTableDataSource (this.customers);
Ajout de modèles de colonnes
Pour chaque définition de colonne, vous devez fournir un nom unique et le contenu de ses cellules d'en-tête et de ligne. Par exemple, il s'agit de la colonne permettant d'afficher l'ID client:
CustomerId
{{customer.id}}
Ceci est une simple définition de colonne avec le nom id
. La cellule d'en-tête contient le texte CustomerId
et chaque cellule de ligne restitue la propriété id
des données de chaque ligne
De la même manière, vous pouvez ajouter les autres définitions de colonnes. 19659005] Pour la colonne des opérations, nous utilisons deux icônes du matériau angulaire: delete
et edit
enveloppé avec des boutons Material:
Operations
Le composant prend en charge la liaison bidirectionnelle à la propriété
valeur
sans avoir besoin de formes angulaires.Ajoutons maintenant un bouton pour créer le client à partir des informations de formulaire:
Vous devez maintenant créer des variables liées à ces contrôles. Dans
src / app / client-create / client-create.component.ts
ajoutez le code suivant à la classe du composant:name: string = ""; email: chaîne = ""; travail: chaîne = ""; adresse: chaîne = ""; selectedSource: string = "email"; selectedGender: string = "masculin"; isCompany: booléen = faux; createdAt = nouveau FormControl (new Date ()); public createCustomer () { / * logique pour créer un client à partir des informations de formulaire * / }
Ceci est une capture d'écran de la composante UI:
Vous pouvez voir une démo en direct de cette ici .
Conclusion
Avec l'internationalisation, l'accessibilité, l'absence de bugs et de hautes performances, Angular Material vise à construire un ensemble de composants UI de haute qualité en utilisant Angular et basé sur la spécification de conception Material.
Dans ce tutoriel, nous avons construit une interface utilisateur simple. Matériau angulaire avec une variété de composants de l'interface utilisateur. Vous pouvez trouver l'ensemble complet des composants de matériau angulaire disponibles dans les docu ments de matériau angulaire .
Vous pouvez trouver le code source de la démo que nous avons construit tout au long de ce tutoriel dans ce dépôt GitHub