73 votes

Erreurs d'analyse du modèle : 'mat-icon' n'est pas un élément connu

Je travaille avec Angular CLI et Angular Material v.5.2.5. et j'essaie d'utiliser

mat-icon-button

mais une telle erreur est produite par la console :

Erreur involontaire : Erreurs d'analyse du modèle : 'mat-icon' n'est pas un élément connu...

si j'utilise

mat-raised-button

tout fonctionne bien Je n'arrive pas à trouver comment résoudre ce problème

index.html

 <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Todo</title>
  <base href="http://stackoverflow.com/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic"
    rel="stylesheet">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
  <app-root></app-root>
</body>
</html>

main.ts

 import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.log(err));

app.module.ts

 import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { MatButtonModule } from '@angular/material/button';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MatButtonModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

136voto

Ploppy Points 5973

Le MatIconModule est absent de vos importations.

imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MatButtonModule,
    MatIconModule, // <-- here
],

26 votes

95 % de tous les problèmes liés au matériel sont résolus par l'importation des bons modules.

0 votes

Et heureusement il y a d'autres réponses en spécifiant le paquet exportant le MatIconModule Merci @freedev !

1 votes

Dans mon cas, le problème était que j'avais oublié d'importer le composant qui utilisait la mat-icône, et d'autres trucs.

27voto

freedev Points 3367

Dans Angular 9 ou supérieur, vous devez

import { MatIconModule } from '@angular/material/icon'

et ensuite

imports: [
    // other imports...
    MatIconModule, // <-- here
],

2 votes

Je fais les bons imports, exports et dans angular 9. Mais, toujours la même erreur. Une idée pour la résoudre ?

0 votes

@meDeepakJain avez-vous essayé de supprimer node_modules et réinstaller toutes les dépendances ?

0 votes

@meDeepakJain quand on fait du chargement paresseux, je crois qu'il faut aussi importer le module dans chaque sous-module que l'on charge paresseusement, c'est-à-dire : à l'intérieur de home.module.ts nous devrions également import { MaterialModule } from '../app.material.module';

21voto

J'utilise Angular 6. et j'ai créé un fichier différent appelé material.module.ts où je garde toutes les dépendances du module mat. Vous pouvez appeler ce fichier material.module.ts dans le fichier app.module.ts. Cela fonctionnera. Lorsque j'ai ajouté le 'MatIconModule' dans mon code, cela fonctionne pour moi.

Voici mon code.

module.matériel.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import {MatButtonModule,MatCheckboxModule,MatToolbarModule,MatInputModule,MatProgressSpinnerModule,MatCardModule,MatMenuModule, MatIconModule} from '@angular/material';

@NgModule({
  imports: [MatButtonModule, MatCheckboxModule,MatToolbarModule,MatInputModule,MatProgressSpinnerModule,MatCardModule,MatMenuModule,MatIconModule],
  exports: [MatButtonModule, MatCheckboxModule,MatToolbarModule,MatInputModule,MatProgressSpinnerModule,MatCardModule,MatMenuModule, MatIconModule]
})

export class MaterialModule{}

et app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { MaterialModule } from './material.module';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    MaterialModule,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

0 votes

Pourquoi avons-nous besoin d'un import et d'un import dans material.ts ?

4voto

import {MatIconModule} from '@angular/material';// this must add to app module.ts

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    MatSliderModule,
    MatButtonModule,
    MatCheckboxModule,
    MatIconModule // this must add to app module.ts
  ],

3voto

Dinesh Kumar Points 113

Si vous avez configuré les modules et importé correctement et que cela ne fonctionne toujours pas, vous pouvez essayer de désactiver le service( Ctrl+C ) et démarrez à nouveau le serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X