2

現在Angular RC5とMaterial Designの最新のプロジェクトに取り組んでいます。最後の部分は関係ありません。

明らかな理由により、個別のモジュールを作成し、すべてをメインモジュールに配置することから離れ始めています。ただし、すべてのモジュールで共有されるプロバイダーが必要です。F/EI には、バックエンド システムへの最終的な接続を行うサービスがあります。異なるモジュールの URL などは、別々のプロバイダーに設定されます。これらのサービスはすべて、現在、iOnic アプリやその他のフロントエンドでも使用しているため、別の git プロジェクトの一部でもあります。

では、プロジェクト用に作成するすべてのモジュールでインスタンスを共有するこのサービスをどのように使用すればよいでしょうか?

また、現在インストールされている/利用可能なモジュールから「ウィジェット」を表示するダッシュボードを作成したいと思います。これは、ユーザーが何を明らかに見ることができるかにもよります。Java での類似構造は、Component Scanning / Reflection によって解決されます。Angular では、タイプを追加してダッシュボードで利用できるグローバルな利用可能なプロバイダーを作成すると思いますか?

すべてが分離されているため、最後の部分はモジュールでは難しいかもしれません。誰かいくつかの考えを共有できますか? 基本的には2つの質問ですが、非常に似たような答えで解決する必要があると思います.

編集:

したがって、私の場合、既存のルートに注意したいと思います。これは、私が述べた別の質問に関連していますが、これに関係しています。

私がやりたいことは、このようなものです

@NgModule({
  import:[
   BaseModule,
   someConstContainingRoutes
  ],

}) 
export class SubModuleWithRouting implements OnInit {
   //Import routeAuthService from BasicModule
   constructor(private routeAuthService: RouteAuthService){};

   ngOnInit() {
      this.routeAuthService.addRoutes(someConstContainingRoutes);
   }
}

このようなパターンにより、メインのコンポーネント内または w/e. もちろん、これを最初のロードまたは w/e で実行することもできますが、それは適切ではありません。

他の開発者も同様のことを行う必要があると思いますが、ここでどのようなパターンが適合するかは今のところわかりません。

たぶん、すでにそのようなフックが利用可能です。私BaseModuleはこのモジュールについて何も知りません。私のルートには、オプションで特定の許可値 (単なる列挙型) が含まれています。canActivateフックでこれを確認したいので、フックでフェッチできないようで、すべての許可に対して設定するのはばかげているように見えるので、ルートについて知っておく必要があるように感じますcanActivate

4

1 に答える 1

2

モジュールのプロバイダーはグローバルに提供されます。

例外は、独自の子インジェクターを取得する遅延ロードされたモジュールです。遅延ロードされたモジュールのプロバイダーは、このモジュールにスコープされます。

遅延ロードされたモジュールのプロバイダーをグローバルに追加する場合は、使用します

static forRoot()あなたのモジュールに

export class SharedModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: SharedModule,
      providers: [ UserService ]
    };
  }
}

だからそれはでインポートすることができます

 imports: [
    SharedModule.forRoot()
  ],

https://angular.io/docs/ts/latest/guide/ngmodule.html#!#shared-module-for-rootも参照してください

于 2016-08-19T10:27:29.900 に答える