問題タブ [angular-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2321 参照

angular - 遅延ロードされたモジュールの Angular 6 表示コンポーネント

Angular 6 を使用して、遅延ロードされたモジュールからコンポーネントをロードする際に問題が発生しています。

CLI を使用してライブラリを作成しました - ng generate library @org/chat

以下を含むように更新されangular.jsonたファイル:

次に、AppComponent を介してモジュールを正常にロードします。

これまでのところ問題なく、モジュールがロードされています。

ただし、ChatModule には ChatPopupComponent というコンポーネントがあり、ダイアログを使用して (または ViewChild コンテナーに追加して) それを表示する方法が見つかりません。

ダイアログでコンポーネントを開くには、モジュールの entryComponents で宣言し、AppComponent レベルでインポートする必要があります。

しかし、コンポーネントを直接インポート (およびライブラリからエクスポート) すると、次の (明白な) エラーが発生します: ' Component ChatPopupComponent is not part of any NgModule or the module has not been imported into your module'。これは遅延ロードされたモジュールであるため、明らかにまだインポートされていません。

次のことを試すと:

次のエラーが表示されます-error loading module Error: No component factory found for EmailPopUpComponent. Did you add it to @NgModule.entryComponents?

コンポーネントを表示する唯一の方法は、モジュールを 内にインポートすることだと思われますが、モジュールapp.module.tsを遅延ロードするという目標には反しています。

上記を行う方法はありますか、それともモジュールとコンポーネントの遅延読み込みに関する基本的なことを見逃していますか?

0 投票する
3 に答える
7219 参照

angular - angular-cli ライブラリは、セカンダリ エントリ ポイントを作成します

angular npm パッケージへのセカンダリ エントリ ポイントと呼ばれるものを作成しようとしています。次の2つのエントリポイントが欲しい

angular-cli を使用して基本パッケージを生成すると、次の構造が生成されます

ng-packagr のドキュメントに基づいて、models というデータ サービスの下にフォルダーを追加し、package.jsonそのフォルダーに 2 番目のフォルダーを追加しますが、ng-packagr は angular-cli とは少し異なる構造を使用しているようです。理想的には、 https://github.com/angular/angular/tree/master/packages/commonに似た構造をモデル化しようとしていますが、一般に公開されている限り@scope/data-service@scope/data-service/models私は満足しています。

ng-packager の推奨事項に似た構造を作成しようとすると、

error TS6059: File 'C:/projects/data-service-app/projects/scope/data-service/models/src/index.ts' is not under 'rootDir' 'C:\projects\data-service-app\projects\scope\data-service\src'. 'rootDir' is expected to contain all source files.

models ディレクトリをディレクトリに移動するとdata-service\src、エントリポイントは

セカンダリ エントリ ポイントの src を削除するにはどうすればよいですか?

angular-cli を使用するときにセカンダリ エントリ ポイントを持つライブラリを作成するための正しいアプローチは何ですか?