Rxjs 观察对象:Angular2亲子沟通

Rxjs 观察对象:Angular2亲子沟通,rxjs,angular2-routing,angular2-forms,angular2-observables,Rxjs,Angular2 Routing,Angular2 Forms,Angular2 Observables,我有一个angular2表单,它由一个父组件和几个子组件组成。我的服务中有一个ReplaySubject,当父对象需要保存某些内容,而子对象订阅了它并保存了它的元素时,它就会发出。父组件需要知道所有子组件何时完成保存。(保存完成后,我们仍将处于表单中。因此孩子们不能取消订阅。)我如何实现这一点。?任何帮助都将不胜感激。谢谢 Parent component ---------------------- ngOnInit() { // TODO: listen to child event

我有一个angular2表单,它由一个父组件和几个子组件组成。我的服务中有一个ReplaySubject,当父对象需要保存某些内容,而子对象订阅了它并保存了它的元素时,它就会发出。父组件需要知道所有子组件何时完成保存。(保存完成后,我们仍将处于表单中。因此孩子们不能取消订阅。)我如何实现这一点。?任何帮助都将不胜感激。谢谢

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.  ?
    );
}

假设父组件可以访问其模板中的子组件,则父组件可以侦听子组件在完成保存后发出的
onSaved
事件

ChildComponent中,您将定义一个输出事件:

@Output()onSaved=neweventemitter


在SO上也有一些很好的答案,比如

,但是我们如何知道我们收到了所有孩子的回复呢?您必须在
onSaved
方法中跟踪这一点-大概使用计数器/增量来确定调用保存的函数的次数。好的。谢谢我想知道是否有一种复杂的方法可以使用rxjs实现这一点