0

私は、親コンポーネントと少数の子コンポーネントで構成されたangular2フォームを持っています。私は親が何かを保存する必要があり、子供がそれを購読してその要素を保存するときに放出するReplaySubjectを私のサービスに持っています。親コンポーネントは、すべての子がいつ保存したかを知る必要があります。 (貯蓄が行われると、私たちはまだフォームになりますので、子供は退会できません)どうすればこれを達成できますか?どんな助けでも大歓迎です。おかげObservables:Angular2親子のコミュニケーション

Parent component 
---------------------- 
ngOnInit() { 
    // TODO: listen to child events and check if respose from all children received ?? 
} 
save() { 
    console.log("Saving elements on parent component"); 
    this.formService.save$.next(this.job.id); 
} 

Child 1 
---------------- 
ngOnInit() { 
    this.formService.save$.subscribe(() => 
     console.log("Save elements on child1 component"); 
     // TODO: some event from here to say child 1 is done saving. ? 
    ); 
} 


Child 2 
---------------- 
ngOnInit() { 
    this.formService.save$.subscribe(() => 
     console.log("Save elements on child2 component"); 
     // TODO: some event from here to say child 2 is done saving. ? 
    ); 
} 

答えて

0

は親がそれで子へのアクセス権を持っていると仮定すると、テンプレートだ、親コンポーネントは、彼らが保存が完了したときに子コンポーネントによって放出されるonSavedイベントをリッスンできます。

ParentComponent.html

<child-component (onSaved)="childSaved()"></child-component>:あなたは、そのイベントに耳を傾ける親テンプレートで

@Output() onSaved = new EventEmitter<any>();

ChildComponent

あなたは出力イベントを定義します

コンポーネント通信のこのタイプの

ParentComponent.ts

onSaved() { // Action when all child components have indicated save is completed }

角度ドキュメントがhereあります。 this one

+0

のようなしかし、どのように我々はあなたが 'onSaved'方法とを追跡する必要があると思います – Josf

+0

すべての子供たちからの回答を得たことを知っています - -

はSO、すでにいくつかの良い回答にもありますおそらく/カウンタを使用してインクリメントされた関数が呼び出された回数を決定します。 –

+0

ありがとう。 rxjsを使ってこれを行うための洗練された方法があるのだろうか? – Josf

関連する問題