如何将获取的数据传递给服务?
How to pass fetched data to a service?
我创建了服务 ServiceA
和 ComponentA
。 ServiceA
需要订阅 ActivatedRoute
的 queryParams
,但我想有条件地订阅,条件是提供给 ComponentA
.
的解析器数据
我的解决方案是检查 ComponentA
的 onInit
中的条件,并根据它订阅 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();
}
});
}
}
我建议您使用 rxjs 并避免订阅。
例如你可以这样做
class ComponentA implements OnInit {
constructor (private serviceA: ServiceA, private _route: ActivatedRoute) {}
ngOnInit() {
this._route.data.pipe(
switchMap(condition => {
if(condition) {
this.serviceA.subscribeToQueryParams();
}
})
);
}
}
我创建了服务 ServiceA
和 ComponentA
。 ServiceA
需要订阅 ActivatedRoute
的 queryParams
,但我想有条件地订阅,条件是提供给 ComponentA
.
我的解决方案是检查 ComponentA
的 onInit
中的条件,并根据它订阅 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();
}
});
}
}
我建议您使用 rxjs 并避免订阅。
例如你可以这样做
class ComponentA implements OnInit {
constructor (private serviceA: ServiceA, private _route: ActivatedRoute) {}
ngOnInit() {
this._route.data.pipe(
switchMap(condition => {
if(condition) {
this.serviceA.subscribeToQueryParams();
}
})
);
}
}