我正在尝试使用BehaviorSubject将数据从一个组件共享到另一个组件,但是当我在 Target Component 中订阅了observable时,它将返回 null
这是我的服务等级
private apiData = new BehaviorSubject<Patient>(null);
public apiData$ = this.apiData.asObservable();
getSinglePatient(id) {
this.loadToken();
let headers = new HttpHeaders().set('Authorization', this.authToken);
return this.http.get('http://localhost:3000/api/patient/' + id, { headers:
headers });
}
setData(data) {
this.apiData.next(data);
}
这是我获取数据的小学班
getSinglePatient(id: any) {
this.patientService.getSinglePatient(id).subscribe((data: any) => {
this.patients = data; //<-- Patients is an Array
this.patientService.setData(data);
this.router.navigate(['/records']);
console.log(data);
});
这是我的目标类别,我要在其中显示/检索数据
patient: Patient;
constructor(private patientService: PatientService) {
this.patientService.apiData$.subscribe(patient => console.log(patient));
}
这是我的控制台输出
我指的是这个example
不确定这是什么错误,因为这是我第一次这样做。谢谢。
答案 0 :(得分:1)
分配后,您需要设置 apiData$
,
setData(data) {
this.apiData.next(data);
this.apiData$ = this.apiData.asObservable();
}
编辑:
您不必执行上述操作,只需在app.module级别中配置服务即可。在每个类中都不需要,因为它们每次都会创建一个实例,因此这些值将消失。