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

How to pass fetched data to a service?

我创建了服务 ServiceAComponentAServiceA 需要订阅 ActivatedRoutequeryParams,但我想有条件地订阅,条件是提供给 ComponentA.

的解析器数据

我的解决方案是检查 ComponentAonInit 中的条件,并根据它订阅 ServiceAqueryParams。但是,我最初想在服务的构造函数中订阅 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();
       }
     });
   }
}

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

例如你可以这样做

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

  ngOnInit() {
   this._route.data.pipe(
     switchMap(condition => {
        if(condition) { 
          this.serviceA.subscribeToQueryParams();
        }
    })
   );
  }
}