2017-09-13 17 views
0

私は子供の親ではない2つのコンポーネントを持っています。私の質問は、私はこのような何かができている:あなたは、おそらく動作するように何かを得るために何かをハックでした...しかし、それはコンポーネントが意味していたかないある別のコンポーネントの1つのコンポーネントのメソッドを呼び出しますか?

constructor(private comp1:ComponentOne){ 
} 

save(){ 
this.comp1.methodComponentOne(); 
} 
+0

コンポーネントは、そのインスタンスを作成する際にもできるクラスです。 – Rajez

答えて

0

:コンポーネント2では

これを行います使用する。

コンポーネントの目的は、特定のビュー/ UIに必要なデータ(プロパティ)とメソッド(機能)を提供することです。したがって、あるコンポーネントには、別のコンポーネントによって呼び出される必要のあるコードは存在しないはずです。

代わりに、サービスを構築してください。サービスの目的は、どのコンポーネントからでもアクセスできるコードを提供することです。

私はここに例があります:https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/

この例では、データを共有する方法を示していますが、ここにも方法を共有することができます。

0

は、両方ともconstructorで 'が注入された'になる必要があります。両方のコンポーネントは、それ自身のサービスメソッドとやりとりすることができます。

0

これはservices in Angularの目的です。また、RXJSはサービス間でいくつかのイベントハブの作成を支援することができます。

0

さまざまなコンポーネントで使用される可能性が高いメソッドは、サービスに属している必要があります。これらをインポートしてコンストラクタに挿入し、必要に応じて呼び出すメソッドです。

import { CustomService } from '../services/custom.service'; 
. 
. 
constructor(
private customService:CustomService, 
) { } 
. 
.  
this.customService.someMethod(); 
関連する問題