如何将获取的数据传递给服务?

问题描述 投票:0回答:1

我已经创建了服务ServiceAComponentAServiceA需要订阅queryParamsActivatedRoute,但我想有条件地这样做,并且条件是提供给ComponentA的解析器数据。

我的解决方法是检查onInitComponentA中的条件,并根据此条件将ServiceA订阅到queryParams。但是,我最初想在服务的构造函数中订阅queryParams,然后以某种方式注入数据。你怎么看?谢谢。

class ServiceA {
  constructor (private _route: ActivatedRoute) {}

  subscribeToQueryParams() {
     this._route.queryParams
     .subscribe(params => {
         ...
     });
  }
}

class ComponentA implements OnInit {
   constructor (private serviceA: ServiceA, private _route: ActivatedRoute) {}

   ngOnInit() {
     this._route.data.subscribe(condition => {
       if(condition) { 
         this.serviceA.subscribeToQueryParams();
       }
     });
   }
}
angular service resolver
1个回答
0
投票

我建议您使用rxjs并避免进行订阅。

例如,您可以执行以下操作

class ComponentA implements OnInit {
  constructor (private serviceA: ServiceA, private _route: ActivatedRoute) {}

  ngOnInit() {
   this._route.data.pipe(
     switchMap(condition => {
        if(condition) { 
          this.serviceA.subscribeToQueryParams();
        }
    })
   );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.