2017-04-13 10 views
0

角4モジュール/コンポーネント/サービスのNPMパッケージを作成しています。コンポーネントは、ユーザー固有のURLや環境固有のURLなど、アプリケーション固有のものを表示する必要があります。パッケージ内の角4コンポーネントにデータを渡す

これらの共有コンポーネントに、Angular 4アプリからのデータをどのように渡すかを決定する際に問題があります。私は、コンポーネント内でサービスを作成してSubjectを使用しようとしましたが、パッケージコンポーネントとアプリケーションコンポーネントの両方のサービスのコピーを作成していたため動作しませんでした。

私の質問は、これはAngular 4でも可能ですか?もしそうなら、どうですか?

+0

第三者のパッケージモジュールでサービスのプロバイダを宣言している理由は、専門家ではありません。 – elpddev

+0

Observableを使用してデータを共有しようとしたため、コンポーネントがそれを購読してアプリがそれを設定できるようになりました。しかし、サービスは2つの異なるコピーであるため動作しませんでした。 – richinator38

+0

パッケージにプロバイダインスタンスとしてサービスを登録する必要があるかどうかはわかりません。パッケージ消費者が使用するパッケージモジュールのエクスポートとしてのみ。 – elpddev

答えて

0

ここに自分の質問に答える。 npmパッケージのAngular 4コンポーネント/モジュール/サービスに存在するサービスをあなたのアプリケーションと共有することが可能になりました。

パッケージ化されたコンポーネント変数を正しくバインドしていない、つまり非同期パイプを使用して、<文字列>に直接バインドしていないということでした。私は購読を処理していて、それが正しく動作しませんでした。ここ

は、パッケージコンポーネントのHTMLは次のとおり

<p>Welcome, <b>{{fullName | async}}</b> 

そして成分typescriptファイルに:

public nameSource:Subject<string> = new BehaviorSubject<string>(""); 

この(その:

ngOnInit(): void { 
    this.fullName = this.headerSvc.nameSource; 
} 

headerSvcこれを有しますアプリ呼び出し):

setName(name: string) { 
    this.nameSource.next(name); 
} 

これは誰かがこれを理解するのに役立ちます。

関連する問題