setData
的父级:
ngOnInit(){
this.updateData(this.temp)
}
updateData(value: Employee) {
this.parentData.setData(value)
}
来自getData
的孩子:
constructor(private route:ActivatedRoute, private parentData:GetParentData){
setTimeout(
console.log("Heavy:" , this.parentData.tempdata.subscribe(data=>console.log("Jessi:",data))),
this.parentData.getData().subscribe(data=>alert("hi"))
,3000)
}
服务:
export class GetParentData{
private dataObs$ = new Subject<Employee>();
tempdata = this.dataObs$.asObservable();
getData():Observable<Employee>{
return this.tempdata;
}
setData(data: Employee) {
this.dataObs$.next(data);
}
控制台响应是:
重型:
订阅者{已关闭:false,syncErrorValue:null,syncErrorThrown:false,syncErrorThrowable:false,isStopped:false ...}已关闭:falsedestination:SafeSubscriberisStopped:falsesyncErrorThrowable:falsesyncErrorThrown:falsesyncErrorValue:null_subscriptions:Array(1) proto :订阅
答案 0 :(得分:1)
由于.subscribe()
会返回订阅,console.log
会打印您要求打印的内容:订阅本身。有几种方法可以获取数据并将其打印到控制台。
如果您想要打印,我会从第一个console.log中获取订阅,并将代码移动到单独的函数,因为setTimeout
只需要一个函数。
constructor(private route:ActivatedRoute, private parentData:GetParentData){
setTimeout(this.printData(), 3000);
}
printData(): void{
this.parentData.tempdata.subscribe(data=>console.log("Heavy:" ,"Jessi:",data)));
this.parentData.getData().subscribe(data=>alert("hi"));
}
我认为您的提醒功能是用于测试的,它不需要留在printData()
。