【发布时间】:2019-12-10 13:48:03
【问题描述】:
我通过BehaviorSubject 将数据从父组件传递到其子组件,方法如下(为简洁起见,我简化了该方法):
const subject = new BehaviorSubject(undefined);
// subscriber A
subject.subscribe((data) => {
if(data !== undefined)
ReloadData(data);
else
FirstLoadData();
});
subject.next(myDataObtainedFromDatabase);
在父组件中,我将获取的数据传递给订阅主题的所有组件。另一方面,我检查数据参数以检测它是否是第一次加载。在第一次加载时,我从数据库中检索数据,然后将数据传递给组件。
我的问题是,
1)通过使用BehaviorSubject(我不想只使用Subject),有没有更好的方法在第一次加载时在这里加载子组件?
2) 对于从父级向子级传递数据,使用BehaviorSubject 而不是Input() 属性是否更好,即使后者似乎更容易应用?
【问题讨论】:
-
事件发射器用于从子传递到父,输入属性从父传递到子。
-
@AdrianBrand 对不起,你说得对。我的意思是
Input()property :) 我更新了我的问题。 -
@c69 谢谢。在该页面中,建议使用
ReplaySubject(1)而不是使用BehaviorSubject(null)。但我认为BehaviorSubject有更多优势,为此我想使用它。那么,我应该通过初始值检查来使用它吗?有什么想法吗?
标签: angular typescript rxjs eventemitter behaviorsubject