2016-10-06 15 views
6

私はAngular2が新しく、別のアプリケーションの1つのアプリケーション内からプレゼンテーションコンポーネントのセット全体を再利用する可能性があるかどうかを調べることに興味がありますか?アプリケーション間でコンポーネントを再利用することはできますか?

たとえば、私はMyAppというAngular 2アプリケーションを持っています。これには、作成した共通コンポーネントがあります。これらはapp/components/commonフォルダにあり、それぞれにTypeScript、Sass、HTMLファイルがあります。

Gulpを使用してTypeScriptをJSにコンパイルし、SassをCSSにコンパイルします。

ここでは、これらの一般的なコンポーネントが他の2つのアプリケーションに共通することがあるため、MyOtherAppという別のAngular 2アプリケーションで使用したいと考えています。

一般的なコンポーネントをすべてMyAppから取り出して、MyOtherAppで使用できるようにしたいと考えています。

これは可能ですか?もしそうなら、コンポーネントの共通の共有のこのタイプの最良のアプローチは何ですか?

私が言ったように、Gulpをビルド/ランニングに使用しています。また、System.jsを使ってAngularアプリケーションの設定を行っています。

私は必要な場合に試したことのいくつかのコードを共有することができますが、共有に役立つものが不明なので、役に立つと思われるものをリクエストしてください。

答えて

4

私は最も一般的な方法は、NgModuleを公開する別のライブラリを構築することだと思います。ちょうどAngular自体、Angular Material 2ライブラリなどと同じです。ただし、ライブラリのビルドスクリプトを設定するためには多くの労力が必要となり、デバッグが難しくなります。

別のオプションは、各プロジェクト

+0

ライブラリにはなぜデバッグが難しいのかについてのリンクや追加情報がありますか?ライブラリが独自の自己完結型Angularプロジェクトの場合、それをそのままデバッグできますか?インポートされたアプリケーション内でライブラリをデバッグするのが難しくなることを意味しますか? –

+1

ええ、あなたはここのようなライブラリに自己完結型のアプリケーションを持つことができますhttps://github.com/angular/material2/tree/master/src/demo-app/しかし、ライブラリを使ってアプリケーションの問題をデバッグするのは難しくなります - 私はライブラリ内のアプリケーションの問題をシミュレートし、そこにデバッグすることを好むでしょう – Rem

+0

ありがとう@Rem、それはメイン角型アプリの内部角型アプリを提供する方が簡単でしょうか?私がしたいのは、実行可能などこかにguldがコンポーネントを提供していると言います。これは、共通のコンポーネントが利用可能であることを示すアプリケーションをロードします。 –

-1

ための角度ブートストラップ機能を備えた別のエントリ・ポイント・ファイルを持つすべてのアプリケーションのための単一の活字体のプロジェクトを持っている私は、このように私のコンポーネントを整理:

/routes 
    /route1/ 
    route1component.ts 
    /route1child1 
    /route1child2 
    /route2/ 
    route2component.ts 
    /route2child1 
    /route2child2 

/apponents (project-level-reuse, must be used in at least 2 places with the app to be promoted to an apponent) 
    /project-reusable-component 

/components (cross-project-level-reuse, used across multiple projects) 
    /cross-project-reusable-component 

のは、の使用を想定してみましょうじゃあ現在、「コンポーネント」内では、Gitサブモジュールを使用してこれらのプロジェクトを共有して、再利用可能な「コンポーネント」が自分のリポジトリに格納され、プロジェクトとしてサブモジュールとして取り込むことができます。

関連する問題