service.ts
@Injectable({
providedIn:'root'
})
export class textAppService{
constructor(private http: HttpClient){}
getPersonDetail(id:any):Observable<any>{
return id? this.http.post(ur;, {id:id}):of(new personDetails());
}
}
· 因此,我想将从getPersonDetail()方法获得的数据传递给其他一些非关系componenet ts文件,由于时间原因,我无法调用getPersonDetail()服务来执行此操作。所以我该怎么做。我能否将从getPersonDetail获得的数据设置为全局对象,以便可以在多个componenet中使用?
答案 0 :(得分:1)
您可以使用BehaviorSubject检测更改。
创建如下服务:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DetectPersonChangeService {
constructor() { }
public status: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
changeData(value: any) {
this.status.next(value);
}
}
在getPersonDetail()
上,致电服务,
this.DetectPersonChangeService.changeData(data);
并检测无关组件的变化:
this.DetectPersonChangeService.status.subscribe((val) => {
console.log(val)
});
答案 1 :(得分:0)
有多种方法可以实现您想要的。最简单的选择是将数据缓存在某个变量中,并检查是否已经为给定的ID设置了数据,然后从缓存中返回而不是进行调用。 您甚至可以使用拦截器来缓存数据并防止污染您的服务调用。 请参考此链接以获取示例Link