web-dev-qa-db-ja.com

Angular 9ライブラリをインポートするとき、MyCommonLibraryModuleのNgModule.importsの4番目の位置の値は参照ではありません。

Angular Angularライブラリを通じて共通のコードを共有するプロジェクトが2つあります。両方のプロジェクトでng updateを実行し、AngularライブラリをAngular 8から9にアップグレードしようとしました。移行スクリプトにより、tsconfig.app.jsonファイルが

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

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

Angularの移行ガイド 状態

Tsconfig.app.jsonを更新して、コンパイルされるファイルを制限しました。コンパイルに含まれている他のファイル(typings.d.tsファイルなど)に依存している場合は、手動でコンパイルに追加する必要があります。

アプリを実行しようとすると(ライブラリを使用するプロジェクトの1つからのng serve)、エラーが発生しました

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                     ],
     ~~~~~~~~~~~~~~~~~~~~~

ライブラリのtsconfig.app.json

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

その後、すべてがうまくいきます。だから私の質問は

  1. ng updateはライブラリを使用するためのものではありませんか?
  2. これはバグですか?
  3. 私の "修正"は大丈夫ですか、またはAngular 9の最適化を見逃していますか?より良い方法はありますか?
2
adamdport

ドキュメントに従って https://update.angular.io/#8.0:9. 特定のコンポーネントから深くインポートする必要があります

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