在Angular 4+中使用BehaviorSubject在独立组件之间调用方法

时间:2019-05-28 13:45:40

标签: angular typescript rxjs angular6 behaviorsubject

在独立(无父子关系)组件之间调用方法的最佳实践是什么?我查看了网络上的几个示例,但其中一些示例使用BehaviorSubject,其中一些示例可观察,而另一些示例则缺少使用ngOnDestroy()方法完成的可观察对象。我可以在How to execute a function from another component that is NOT a sibling of the first component?上成功使用Angular7项目,但我认为使用BehaviorSubject有更好的方法,不会遗漏任何点。任何想法?

1 个答案:

答案 0 :(得分:1)

毫无疑问,最佳实践方法是使用共享服务,如本文所述。您不必一定要使用BehaviorSubject。如果您愿意,可以使用常规主题,或者如果您更熟悉,可以使用更多经典的getter和setter方法(尽管我强烈建议您使用RxJS接受反应式方法)。

服务通常创建为单例,因此长期运行的Observable会遇到问题,除非您为其添加了一些自定义逻辑(例如,在服务中创建一个用于退订的方法,然后在任一方法上调用该方法组件的onDestroy挂钩)。

我可能会误解您的问题,但是如果您担心要公开BehaviorSubject,则可以始终将它们包装在Observable中,而只公开Obsevable:

private myBehaviorSubject = new BehaviorSubject<boolean>(false);
myObservable = this.myBehaviorSubject.asObservable()

希望能回答您的问题。