Angular 通信-具有多个父组件的子组件

Angular 通信-具有多个父组件的子组件,angular,rxjs,angular8,Angular,Rxjs,Angular8,在我的应用程序中有多个父组件,它将表组件作为子组件,我在开始时传递所有参数,当我单击排序时,它将转到父组件(现在由@Output)完成),它将从服务中带来数据(这是在父组件中定义的,因为所有父组件都从不同的服务中带来数据)然后通过表类的viewChild引用将数据传递给child,并在从后端对数据进行排序后在tablecomponent类中调用方法listen 我尝试了以下方法:- 共享服务方法,从子级开始,我无法确定应该调用哪个父级 行为主题:-输出是从所有父级订阅的,因此当输出被发出时,它进

在我的应用程序中有多个父组件,它将表组件作为子组件,我在开始时传递所有参数,当我单击排序时,它将转到父组件(现在由
@Output
)完成),它将从服务中带来数据(这是在父组件中定义的,因为所有父组件都从不同的服务中带来数据)然后通过表类的
viewChild
引用将数据传递给child,并在从后端对数据进行排序后在
tablecomponent
类中调用方法listen

我尝试了以下方法:-

共享服务方法,从子级开始,我无法确定应该调用哪个父级

行为主题:-输出是从所有父级订阅的,因此当输出被发出时,它进入所有父级

 @ViewChild('mainTable') mainTable: TableComponent;

callChildren(){
  this.mainTable.listenSort(this.rows);
}

有谁能给我一个解决这个问题的清晰方法吗?

您应该使用事件发射器与父组件通信,这样您就只能从父组件捕获事件。如果要使用服务,则需要从每个父组件创建服务的saperate实例。

如何有多个父组件?一个父组件可能有多个子组件,但它是如何工作的?我在所有页面中使用共享组件表组件来显示表,因此,表组件将是一个子组件,并且该子组件有许多父组件。您可以使用唯一ID从子组件输出,并在父组件中进行筛选,但是我建议您发出一个具有唯一ID的BehaviorSubject,该ID引用具有ShareReplay运算符的子组件,但每个父级都有自己的表组件,它们不共享它。这是正常的亲子关系是的,我也这么做了。我创建了分层喷油器服务,并在组件中提供了不同级别的喷油器服务,谢谢大家,我的问题解决了。