我想使用Subject将数据从一个组件传递到另一组件。我正在使用Angular 7。 以下是我的服务:-
public shareData = new Subject();
setShareDataOfReadingDetail(datatobeShared:any){
console.log(datatobeShared)
this.shareData.next(datatobeShared);
this.shareData.complete()
}
getShareDataOfReadingDetail(){
return this.shareData.asObservable();
}
我的第一个组件是:-
shareDetail(detail){
this.readingService.setShareDataOfReadingDetail(detail)
this.router.navigate(['./tabs/tabs/readings/detail'])
}
我要在其中获取数据的组件是:-
ngOnInit() {
this.readingService.getShareDataOfReadingDetail().subscribe((data)=>{console.log(data)})
}
但是订阅主题根本不会触发(即,控制台中未打印任何内容)
答案 0 :(得分:0)
何时实例化第二个组件?在调用shareDetail之前还是之后?我假设这是路由器导航的结果。如果是这样,则您要发送一个值并在细节组件有机会订阅之前完成主题。我可能会在服务的ngOnDestroy中推迟完成Subject的工作。
我也将考虑使用BehaviorSubject或ReplaySubject(以提供值的缓存)。