我需要将数据从一个组件传递到另一个组件,但是这样做很困难。
我有一个Observable
,我需要以Subject
的形式传递,这是另一个可观察到的。我怎么做?我目前使用的方式无法正常工作,因为它已在目标组件 undefined
。
这是我所拥有的:
card.component.ts (全部开始的地方]
showBox(studentID) {
const airportPickup = this.studentService.getCurrentStudents().pipe(
map(snaps => {
const student = snaps.find( s => s.studentID === studentID );
return {
requirePickup: student.pickup,
whopickup: student.whoPickup
};
})
);
this.studentService.airportPickupDropoff.next(airportPickup);
}
如果我console.log()
,则airportPickup
我得到了对象。没有问题。问题是当我在其他组件中获得它时,将其显示为undefined
。
flight-info.component.ts (目标)
getAirportPickup() {
this.studentService.airportPickupDropoff.subscribe(
(apdata) => {
this.airportPickupDropoff = apdata;
},
(e) => alert(e)
);
}
[service我有这个:
airportPickupDropoff = new Subject<any>();
您需要订阅可观察对象,或将其与RxJS运算符(例如tap)链接,以便将可观察对象中的值分配给您的airportPickupDropoff
主题。
选项1:
showBox(studentID) {
this.studentService.getCurrentStudents().pipe(
map(snaps => {
const student = snaps.find( s => s.studentID === studentID );
return {
requirePickup: student.pickup,
whopickup: student.whoPickup
};
})
).subscribe(response => {
this.studentService.airportPickupDropoff.next(response);
});
}
选项2:
showBox(studentID) {
this.studentService.getCurrentStudents().pipe(
map(snaps => {
const student = snaps.find( s => s.studentID === studentID );
return {
requirePickup: student.pickup,
whopickup: student.whoPickup
};
}),
tap(response => this.studentService.airportPickupDropoff.next(response)),
)
}
也许最好通过Subject
而不是另一个Observable
发送数据?
showBox(studentID) {
///...
airportPickup.subscribe(apdata => this.studentService.airportPickupDropoff.next(apdata));
}