从分配值,以在角度分量的变量的订阅observeble HTTP请求的[复制](assigning

2019-09-30 01:45发布

这个问题已经在这里有一个答案:

  • 如何返回从可观察/ HTTP /异步的角度调用的响应? 8个回答

当我想从预订HTTP请求值分配给在角度成分的局部变量得到了一个未定义

  patient: Patient;
  hpId: any;
  ngOnInit() {
    const id = +this.route.snapshot.paramMap.get('id');
    this.fetchPatient(id);
    console.log(this.hpId);
  }
  fetchPatient(id: number) {
    this.patientService.getPatient(id)
    .subscribe( data => {
      this.patient = data;
      this.hpId = this.patient.appointment[0].healthProfessionalId;
    });
  }
}

我想用HPID的值超出订阅方法的范围

Answer 1:

有两种方法:

1)如果你想显示hdId在HTML页面,然后使用像{{ hpId }}

2)如果你想调用另一个API那么你可以用里面那个呼叫.subscribe()调用像

fetchPatient(id: number) {
    this.patientService.getPatient(id)
    .subscribe( data => {
      this.patient = data;
      this.hpId = this.patient.appointment[0].healthProfessionalId;
      this.yourMethod(this.hdId); // here
    });
}

yourMethod(hdId){
     console.log(hdId);  // do whatever with `hdId`
}


Answer 2:

  • 编码打字稿就像plumbing..you有如下代码流。 如果你打开水龙头,但如果水是在路上,直到它到达龙头不会出现水,所以如果你打算洗你的衣服你的水来自自来水后做到这一点。
  • 所以,当你调用方法this.fetchPatient(ID); 它会打到后端和等待认购,直到它得到的数据或error.after的this.fetchPatient(ID); 然后你把你的console.log(this.hpId); 在这一点上的数据没有检索但提出的要求,因此它会显示不确定的。 如果你想看到的数据将控制台日志内该行后认购this.hpId = this.patient.appointment [0] .healthProfessionalId;
  • 此外,如果你想使用其他方法this.hpId的价值
    调用后this.hpId =那些方法
    this.patient.appointment [0] .healthProfessionalId; 线。


文章来源: assigning value to a variable in angular component from a subscribe of observeble HTTP request [duplicate]