web-dev-qa-db-fra.com

"La valeur à la position 4 dans le NgModule.imports de MyCommonLibraryModule n'est pas une référence" lors de l'importation d'une bibliothèque Angular 9

J'ai deux Angular projets qui partagent du code commun via une bibliothèque Angular). J'ai exécuté ng update Dans les deux projets et mon Angular pour essayer de mettre à niveau de Angular 8 à 9. Les scripts de migration ont changé mon fichier tsconfig.app.json De

  "include": [
    "../src/**/*"
  ]

à

  "files": [
    "main.ts",
    "polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]

Guide de migration Angular états

Nous avons mis à jour le tsconfig.app.json pour limiter les fichiers compilés. Si vous comptez sur d'autres fichiers inclus dans la compilation, comme un fichier typings.d.ts, vous devez l'ajouter manuellement à la compilation.

Lorsque j'ai essayé d'exécuter mon application (ng serve À partir de l'un des projets qui consomme la bibliothèque), j'ai eu une erreur

ERROR in Failed to compile entry-point my-common-library (module as esm5) due to compilation errors:
node_modules/my-common-library/fesm5/my-common-library.js:5207:30 - error NG1010: Value at position 4 in the NgModule.imports of MyCommonLibraryModule is not a reference: [object Object]

5207                     imports: [
                                  ~
5208                         CommonModule,
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ...
5225                         MatAutocompleteModule
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5226                     ],
     ~~~~~~~~~~~~~~~~~~~~~

Si je remplace le tsconfig.app.json De ma bibliothèque, revenez à

  "include": [
    "../src/**/*"
  ]

alors tout fonctionne très bien. Alors je suppose que mes questions sont

  1. ng update N'est-il pas destiné à fonctionner avec des bibliothèques?
  2. Est-ce un bug?
  3. Est-ce que mon "correctif" est OK ou est-ce que je passe à côté de quelques Angular 9 optimisations? Y a-t-il un meilleur moyen?
2
adamdport

Selon les documents https://update.angular.io/#8.0:9. vous devez importer profondément à partir du composant spécifique

import {MatAutocompleteModule} from '@angular/material/autocomplete';
@NgModule({
imports: [
MatAutocompleteModule
]
2
Palak Jadav