レイジーローディングは別の依存関係ツリーを作成しませんされて - 少なくとも、ではないあなたが記述しているように。
ご存じのように、Angularの依存性注入システムは、実際にはインジェクタのツリーです(ビュー階層内の各コンポーネントごとに1つ)。依存関係を要求すると、Angularはこの依存関係を要求しているコンポーネントから、その依存関係を提供できる最初のインジェクタを見つけるまで、このインジェクタのツリーを表示します。 これは、コンポーネントツリーの任意のレベルで、コンポーネントへの依存関係のプロバイダを指定し、そのコンポーネントにその依存関係の独自のインスタンスを持たせることができるため、必要に応じて多くの機能を提供します。さらに、そのコンポーネントのすべての子も、その依存関係の同じインスタンスを共有します。
これは、階層依存性注入がコンポーネントに関してどのように機能するかの基本的な概要です。しかし、モジュールに関しては、状況は少し異なります。デフォルトでは、NgModuleによって提供されるすべての依存関係がルートインジェクタに追加されます。つまり、その依存関係の単一のインスタンスがアプリケーション全体で共有されます。例外は、NgModuleが遅延ロードされている場合です。その場合、遅延読み込みモジュールによって提供される依存関係はルートインジェクタに追加されません。代わりに、それらの依存関係は、遅延ロードされたモジュールのルートコンポーネントに追加されます(私はこれを難しい方法で学びました - あなたの遅延ロードされたモジュールの複数のルートコンポーネントがある場合、それぞれの 'ルートコンポーネント'依存)。
これは基本的な階層構造ですが、ロードされたモジュールがルートインジェクタに依存関係を追加するのに対して、レイジーロードモジュールはルートモジュールにルート要素を追加するだけです。さらに、遅延ロードされたモジュールが(例えばあなたのSharedModuleのような)依存関係をも提供するNgModuleをインポートする場合、それらの依存関係もモジュールのそのルートコンポーネントに追加されます。 (SharedModuleも熱心に読み込まれている場合は、その依存関係もルートインジェクタに追加され、それらの依存関係の複数のインスタンスが利用可能になります)。
最後の点は、あなたが見ている動作を見ている理由です。 lazyモジュールがSharedModuleをインポートすると、SharedModules提供の依存関係が遅延モジュールのルートコンポーネントに追加され、それらの依存関係のインスタンスが重複します。
私はあなたを説明することができます。あなたのすべての質問をリストアップ – Aravind
私の質問は、私が他の記事の手順に従わなかったのに、なぜ動作しているのですか?つまり、共有モジュールを.forRoot()としてインポートしなかったのです。 – Sridhar