私のアプリケーションはSPAではありませんが、私はページの一部にAngular 2を使用しています。どこかのページの下部にプロバイダごとに異なる複数のルートモジュールをブートストラップ(外部から提供)
let serviceOne = new ServiceOne("SuperImportantInfoFromSomewhere");
let providers: any = [{ provide: ServiceOne, useValue: serviceOne }];
platformBrowserDynamic(MyFirstRootModule, providers);
ルートモジュール2、::
ルートモジュール1:
私は外の世界からの情報が含まれている注射用プロバイダとブートストラップ複数のルートモジュールを作成しましたlet serviceTwo = new ServiceTwo(42);
let providers: any = [{ provide: ServiceTwo, useValue: serviceTwo }];
platformBrowserDynamic(MySecondRootModule, providers);
悲しいことに、これはうまくいきません。私がServiceTwo
をコンポーネントに注入させたいとき、それは失敗します。これは、最初のブートストラップ(この場合はMyFirstRootModule
)で両方のサービスを提供する場合にのみ機能します。私は完全に理解していない新しいDIシステムに関連するものでなければなりません。
私はCMS内で働いているため、最初のブートストラップではすべてのプロバイダがわかりません。 2つのモジュールは互いに知りません。
最初のルートモジュールがブートストラップされた後、これらの2つのモジュールを完全に分離する方法や、何らかの形でDIシステムに2番目のサービスを提供する方法はありますか?
重要なのは、両方のブートストラップコンポーネントです。結局、Angular 2の良いユースケースのようには見えません。 – estus
あなたは正しいです、彼らは2.0への途中でいくつかのユースケースを残しました。悲しい。 –
あなたのアプローチに代わるより良い方法があるかもしれません。 2番目のモジュールのルートコンポーネントが最初のコンポーネントのルートコンポーネントの子コンポーネントである場合、これが実際の問題です。詳しくは、[MCVE](http://stackoverflow.com/help/mcve)を参考にしてください。 – estus