メインアプリのサブエリアを表すライブラリを参照するメインのAngularアプリがあります。
ライブラリで個別のルートを定義する機能が必要でした。
例えば:
- アプリにはルート パスがあります: /app
- ライブラリには子パスがあります: /library
/app/library をルーティングした後、ライブラリに保存されているコンポーネントにリダイレクトする必要があります。
遅延読み込みを使用することでそれを実現しました。メインアプリでルートの「loadChildren」プロパティを使用してルートを接続する場合にのみ機能します。
また、Angular チームによって提案された回避策を適用することを余儀なくされました node_modules にあるライブラリ パッケージからのモジュールの遅延読み込みが失敗します。これは、Angular ワークスペースまたはノード モジュール内のライブラリを遅延読み込みするためにプロキシ/ラッパー モジュールを使用することです。
とにかく、すべてが機能しました。
そして今、問題が始まります:
Angular ライフサイクル イベント (ngOnInit など) は、ライブラリのコンポーネントでは機能しません。熱心な読み込みを使用してライブラリを参照したとき (同時に、ルーティングが必要でなくなったとき)、Angular フックが正常に機能し始めました。ここで何が間違っている可能性がありますか?
それはAngularの問題ですか?アプリを適切に構成したかったので、一部の領域を別々のライブラリに分けました。ただし、すべてのコードをメイン アプリのみに移動することをあきらめて、ほぼ完了しています。
編集:
app.module でのルーティング (forRoot、遅延読み込み):
export const routes: Routes = [
{ path: 'app', loadChildren: './lazy/lazy-wrapper.module#LazyWrapperModule' },
];
ルーティング (メイン アプリ内にある LazyWrapperModule) (forChild):
{ path: '', component: LibraryComponent, pathMatch: 'full' },
ライブラリ内のルーティング (forChild):
{ path: 'library', component: TargetComponent },