我有一个结构如下的Angular应用程序:
- 在
<router-outlet>
. - 具有
Subject<Resource>()
和resource.asObservable()
资源的服务。 - 订阅可观察量的几个子组件。
我的主要组件从 API 获取资源。每个子组件应该显示资源的一部分。
主组件获取ngOnInit
中的资源,之后它使用service.resource.next()
在服务中设置资源。问题是它在加载子组件之前执行此操作(显然(,因为我传递给子组件中的subscribe
函数的回调函数没有被调用。
子组件在其构造函数中订阅服务中的资源。
如何确保主组件在加载子组件时设置资源,并且可以从可观察量接收更新?除了ngOnInit
之外,我还需要使用其他功能吗?还是有完全不同的方法?
谢谢。
而不是你想要Subject<Resource>()
ReplaySubject<Resource>(1)
重播主题将向新订阅者重播最后 N 个排放,其中 N 是构造函数的参数,因此在本例中,只有最后 1 个。