主题订阅未触发

时间:2019-04-30 10:27:52

标签: angular typescript rxjs angular7 subject

我想使用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)})

  }

但是订阅主题根本不会触发(即,控制台中未打印任何内容)

1 个答案:

答案 0 :(得分:0)

何时实例化第二个组件?在调用shareDetail之前还是之后?我假设这是路由器导航的结果。如果是这样,则您要发送一个值并在细节组件有机会订阅之前完成主题。我可能会在服务的ngOnDestroy中推迟完成Subject的工作。

我也将考虑使用BehaviorSubject或ReplaySubject(以提供值的缓存)。