問題タブ [angular-compiler]
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.
angular - angular 8のモジュールからインジェクターを取得します
問題:
angularでルーティングされていないモジュールの遅延読み込みを設定しています。私が使用したバージョン7では、モジュールを遅延ロードし、モジュールへの最初のエントリポイントを取得するNgModuleFactoryLoader
機能です(アウトケースのサービス)load
しかし、Angular 8NgModuleFactoryLoader
では非推奨になっているため、代わりにその方法でモジュールをロードする必要があります。
ここでの問題は、新しい遅延読み込み (IVY のアイデアの 1 つ - ファクトリがない) で、ファクトリを取得してプロバイダを取得できないことです。
私がすでに試したこと:
最初の解決策(製品にAOTコンパイラを使用しているため、私たちには適していないJITコンパイラでのみ機能します)
2番目の解決策(ダーティで完全にチェックされngInjectorDef
ていません。IVYの新機能を使用しており、まだ説明されているAPIはありません):
ngInjectorDef
- angular によって追加され、ファクトリ、プロバイダー、およびインポートのプロパティを持つ静的モジュール クラス プロパティです。
ソース:
- https://netbasal.com/the-need-for-speed-lazy-load-non-routable-modules-in-angular-30c8f1c33093 (Angular 8 までのルーティング不可能なモジュールの遅延ロード)
- https://herringtondarkholme.github.io/2018/02/19/angular-ivy/ (IVY プレビュー - セクションを参照
No NgFactory file anymore
) - https://blog.angularindepth.com/automatically-upgrade-lazy-loaded-angular-modules-for-ivy-e760872e6084 (Angular < 8 と Angular 8 での遅延読み込みの違いについて説明します。重要なセクション - NgModule から NgModuleFactory へのAOTコンパイラ、基本的に私の問題は何ですか)
angular - カスタム Action で AsyncScheduler を使用する方法
ページが表示されていないときに、RXJS ストリームが 250 ミリ秒間隔でデータのチャンクを処理する必要があります。Chrome は、これらの間隔を 1000 ミリ秒間隔に調整しています。これを回避するために、Web ワーカー内で setInterval を使用する AsyncAction を実装しました。私は次のように使用しています:
export const customScheduler = new AsyncScheduler(WebWorkerAsyncAction)
しかし、これには問題がないわけではありません。これを JIT を使用してコンパイルすると、正常に動作します。AOT (別のプロジェクト要件) でコンパイルする場合、最初のコンパイルでは機能しますが、その後の 2 回目のコンパイルは次のエラーで失敗します。
ERROR in : エラー: TsCompilerAotCompilerTypeCheckHostAdapter.fromSummaryFileName (\node_modules@angular\compiler-cli\src\transformers\compiler_host.js:272:23 で /node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts から ./ を解決できませんでした) AotSummaryResolver.fromSummaryFileName (\node_modules@angular\compiler\bundles\compiler.umd.js:26320:30) で \node_modules@angular\compiler\bundles\compiler.umd.js:24481:126 で Array.map () FromJsonDeserializer.deserialize (\node_modules@angular\compiler\bundles\compiler.umd.js:24481:41) で deserializeSummaries (\node_modules@angular\compiler\bundles\compiler.umd.js:24086:29) で AotSummaryResolver._loadSummaryFile (\node_modules@angular\compiler\bundles\compiler.umd.js:26370:26) AotSummaryResolver で。resolveSummary (\node_modules@angular\compiler\bundles\compiler.umd.js:26328:22) で ToJsonSerializer.loadSummary (\node_modules@angular\compiler\bundles\compiler.umd.js:24310:48) で ToJsonSerializer.visitStaticSymbol ( \node_modules@angular\compiler\bundles\compiler.umd.js:24285:32) で ToJsonSerializer.visitOther (\node_modules@angular\compiler\bundles\compiler.umd.js:24250:34) で visitValue (\node_modules@angular) \compiler\bundles\compiler.umd.js:2438:24) at \node_modules@angular\compiler\bundles\compiler.umd.js:2451:54 at Array.map () at ToJsonSerializer.ValueTransformer.visitArray (\node_modules@ angular\compiler\bundles\compiler.umd.js:2451:24) at visitValue (\node_modules@angular\compiler\bundles\compiler.umd.js:2429:28)loadSummary (\node_modules@angular\compiler\bundles\compiler.umd.js:24310:48) で ToJsonSerializer.visitStaticSymbol (\node_modules@angular\compiler\bundles\compiler.umd.js:24285:32) で ToJsonSerializer.visitOther ( \node_modules@angular\compiler\bundles\compiler.umd.js:24250:34) at visitValue (\node_modules@angular\compiler\bundles\compiler.umd.js:2438:24) at \node_modules@angular\compiler\bundles \compiler.umd.js:2451:54 at Array.map () ToJsonSerializer.ValueTransformer.visitArray (\node_modules@angular\compiler\bundles\compiler.umd.js:2451:24) at visitValue (\node_modules@angular\コンパイラ\バンドル\compiler.umd.js:2429:28)loadSummary (\node_modules@angular\compiler\bundles\compiler.umd.js:24310:48) で ToJsonSerializer.visitStaticSymbol (\node_modules@angular\compiler\bundles\compiler.umd.js:24285:32) で ToJsonSerializer.visitOther ( \node_modules@angular\compiler\bundles\compiler.umd.js:24250:34) at visitValue (\node_modules@angular\compiler\bundles\compiler.umd.js:2438:24) at \node_modules@angular\compiler\bundles \compiler.umd.js:2451:54 at Array.map () ToJsonSerializer.ValueTransformer.visitArray (\node_modules@angular\compiler\bundles\compiler.umd.js:2451:24) at visitValue (\node_modules@angular\コンパイラ\バンドル\compiler.umd.js:2429:28)visitOther (\node_modules@angular\compiler\bundles\compiler.umd.js:24250:34) at visitValue (\node_modules@angular\compiler\bundles\compiler.umd.js:2438:24) at \node_modules@angular\compiler \bundles\compiler.umd.js:2451:54 at Array.map () ToJsonSerializer.ValueTransformer.visitArray (\node_modules@angular\compiler\bundles\compiler.umd.js:2451:24) at visitValue (\node_modules@ angular\compiler\bundles\compiler.umd.js:2429:28)visitOther (\node_modules@angular\compiler\bundles\compiler.umd.js:24250:34) at visitValue (\node_modules@angular\compiler\bundles\compiler.umd.js:2438:24) at \node_modules@angular\compiler \bundles\compiler.umd.js:2451:54 at Array.map () ToJsonSerializer.ValueTransformer.visitArray (\node_modules@angular\compiler\bundles\compiler.umd.js:2451:24) at visitValue (\node_modules@ angular\compiler\bundles\compiler.umd.js:2429:28)24) visitValue (\node_modules@angular\compiler\bundles\compiler.umd.js:2429:28) で24) visitValue (\node_modules@angular\compiler\bundles\compiler.umd.js:2429:28) で
これは「内部」RXJS パッケージを使用する際の癖だと思いますが、AsyncHandler に頼らずにこれを回避する方法はわかりません。