使用RXJS或@ input / @ output

时间:2019-06-16 10:43:42

标签: angular rxjs

我一直在环顾四周,发现您可以与RXJS通信,例如,此问题说明了如何:https://stackoverflow.com/questions/50967216/angular-5-6-components-communication-using-rxjs#= 我的问题是,考虑到发出(@output)和接收事件(@input)的模式,哪种交流方式更可取? 我应该补充一点,导入服务似乎很麻烦,因为它将您绑定到该特定服务,但这可能只是我的有限理解。

3 个答案:

答案 0 :(得分:0)

如果存在父子关系,则将始终使用事件和输入。 仅当您的组件之间没有连接时,才可以使用通过服务进行信息传递的方式。

答案 1 :(得分:0)

我认为最可取的方法是使用输入/输出,因为这使您的组件更加通用,而不是与特定的实现捆绑在一起。因此,您可以选择在其他地方重用它,只需将其他属性传递给Input并与Output一起使用另一个处理程序即可。

通常,使用服务或输入/输出的区别不大。同一件事的不同实施策略。但是,服务的使用更为具体,而不是“抽象”,因此,如果在其他情况下需要相同的组件,则需要实现另一个使用其他服务的组件。

恕我直言,在大多数情况下,输入/输出是首选。

答案 2 :(得分:0)

在这种情况下,使用输入/输出变量比使用rxjs observables更容易和更好,原因如下:

  1. 使用输入/输出,您无需创建服务并将其注入到两个组件中。
  2. 无需处理订阅/取消订阅。 Angular通过输入和输出变量为您完成此任务。

请注意,如果您要处理同级组件,祖父组件或多个状态共享,那么我建议您使用具有相互服务和behaviorSubject的状态共享,甚至在更复杂的情况下甚至使用诸如ngrx之类的共享管理模式。

相关问题