在独立(无父子关系)组件之间调用方法的最佳实践是什么?我查看了网络上的几个示例,但其中一些示例使用BehaviorSubject,其中一些示例可观察,而另一些示例则缺少使用ngOnDestroy()方法完成的可观察对象。我可以在How to execute a function from another component that is NOT a sibling of the first component?上成功使用Angular7项目,但我认为使用BehaviorSubject有更好的方法,不会遗漏任何点。任何想法?
答案 0 :(得分:1)
毫无疑问,最佳实践方法是使用共享服务,如本文所述。您不必一定要使用BehaviorSubject。如果您愿意,可以使用常规主题,或者如果您更熟悉,可以使用更多经典的getter和setter方法(尽管我强烈建议您使用RxJS接受反应式方法)。
服务通常创建为单例,因此长期运行的Observable会遇到问题,除非您为其添加了一些自定义逻辑(例如,在服务中创建一个用于退订的方法,然后在任一方法上调用该方法组件的onDestroy挂钩)。
我可能会误解您的问题,但是如果您担心要公开BehaviorSubject,则可以始终将它们包装在Observable中,而只公开Obsevable:
private myBehaviorSubject = new BehaviorSubject<boolean>(false);
myObservable = this.myBehaviorSubject.asObservable()
希望能回答您的问题。