25
votes

MatToolbar génère une erreur lors de son utilisation avec Angular 9

Version angulaire 9.2.0

Lorsque MatToolbarModule le MatToolbarModule dans un module et que je l'utilise dans le modèle html, j'obtiens le message d'erreur suivant:

Cela signifie probablement que la bibliothèque (@ angular / material / toolbar) qui déclare MatToolbarModule n'a pas été traitée correctement par ngcc, ou n'est pas compatible avec Angular Ivy. Vérifiez si une version plus récente de la bibliothèque est disponible et mettez-la à jour si tel est le cas. Pensez également à vérifier auprès des auteurs de la bibliothèque si la bibliothèque est censée être compatible avec Ivy.

8 export declare class MatToolbarModule {
                       ~~~~~~~~~~~~~~~~
src/app/angular-material.module.ts:53:14 - error NG6002: Appears in the NgModule.imports of ComponentsModule, but itself has errors

Quelqu'un est-il confronté au même problème?


0 commentaires

9 Réponses :


0
votes

Je l'ai résolu en supprimant les node_modules et en les réinstallant.

Discussion complète ici: https://github.com/angular/components/issues/18637


0 commentaires

35
votes

J'ai eu le même problème avant, c'est parce que vous modifiez votre fichier app.module.ts pendant que le serveur fonctionne. Essayez de l'arrêter, puis exécutez-le à nouveau à l'aide de la commande ng serve .


3 commentaires

J'avais le même problème avec MatListModule et le serveur d'arrêt / redémarrage était la solution


Quelqu'un a une idée pourquoi c'est nécessaire? Cela fonctionne pour moi, mais je déteste quand "avez-vous essayé de l'éteindre et de le rallumer?" résout le problème sans avoir une idée du vrai problème. Je ne blâme pas la réponse btw (j'ai voté pour) mais juste curieux plus que tout.


Toutes nos félicitations! Vous avez sauvé ma journée :) très simple en effet.



46
votes

Ajoutez ci-dessous la configuration spécifique dans package.json et npm install.

{
  "scripts": {
    "postinstall": "ngcc"
  }
}

Référence: https://angular.io/guide/ivy#speeding-up-ngcc-compilation


3 commentaires

Je l'ai corrigé sans le ngcc. Je travaille avec Angular 9 et pendant le npm i material il a pris la version 10 de angular / material. J'ai changé de npm i en ng add angular / material et puis cela a fonctionné.


Pour moi, cela a fonctionné, il suffit de fermer l'instance en cours d'exécution, d'installer npm et de terminer ...


Nous apprécions l'ajout du lien vers les documents pour ne pas simplement changer aveuglément la configuration du projet!



0
votes

J'ai importé des classes (FormControl, FormGroup, Validators) qui ne sont pas des modules dans app.module.ts
J'ai supprimé ces classes et cela a résolu mon problème.


0 commentaires

0
votes

Ce qui a fonctionné pour moi, c'est l'importation de tout le module pour MatToolbar.

import {MatToolbarModule} from '@angular/material/toolbar'; 

Et puis en ajoutant MatToolbarModule au tableau importations [] dans mon app.module.ts.


0 commentaires

0
votes

J'ai trouvé une erreur dans la section des importations, j'ai ajouté un élément inexistant.

import { MatMenuItem } from '@angular/material/menu';

et l'élément MatMenut n'existe pas, j'ai changé dans MatMenuModule et après travaux


0 commentaires

9
votes

Cela m'arrivait à chaque fois que j'importais «MatToolbar» «MatDialog» au lieu de «MatToolbarModule» ou «MatDialogModule».


0 commentaires

1
votes

arrêtez votre service angulaire (si vous utilisez l'invite de commande ou PowerShell ctrl + c) et exécutez à nouveau (ng serve)


1 commentaires

Si vous lisez attentivement, vous pouvez voir qu'il y a déjà la même réponse.



0
votes

J'avais donc juste un problème similaire, et j'ai pu le résoudre en réorganisant mes modules d'importation.

Dans mon cas, LoadingBarRouterModule avant le module principal LoadingBarModule . Vérifiez si vous chargez le module MatToolbarModule avant un autre module requis et déplacez-le en dessous.


0 commentaires