在 subscribe() 方法之外未定义变量 Angular 2
variable is undefined outside of subscribe() method Angular 2
我正在处理 angular 2,并且在 subscribe() 函数之外的变量中出现未定义错误。employee
变量 ID undefined
在 subscribe()
之外 function.Please 求助me.Thanks。下面是代码
export class DetailsComponent implements OnInit {
employee;
constructor(private _location:Location, private _empService:EmpService, private route:ActivatedRoute) { }
ngOnInit() {
//let params:any = this.route.snapshot.params;
this.editEmployee(6); //I have tried to pass static value
console.log(this.employee); //Here this is undefined
}
backClicked() {
this._location.back();
}
editEmployee(id) {
this._empService.getEmployee(id).subscribe((employee)=> {
this.employee = employee[0];
console.log(employee[0]); //This have below output in console
//{id: "6", emp_name: "Mohit", emp_email: "mohit@ommzi.com", emp_phone: "9800000", emp_status: "y"}
})
}
}
因为您正在使用 Observables,所以 console.log(this.employee)
在设置员工之前被调用。我会在 editEmployee
中推荐你 return 一个 Promise 并使用:
editEmployee(id) {
return new Promise((resolve) => {
this._empService.getEmployee(id).subscribe((employee)=> {
this.employee = employee[0];
console.log(employee[0]);
resolve();
});
});
}
this.editEmployee(6).then(()=> {
console.log(this.employee);
}
请注意,这不是最好、最漂亮的解决方案,但如果您想保持代码的这种风格,我会这样做。
我正在处理 angular 2,并且在 subscribe() 函数之外的变量中出现未定义错误。employee
变量 ID undefined
在 subscribe()
之外 function.Please 求助me.Thanks。下面是代码
export class DetailsComponent implements OnInit {
employee;
constructor(private _location:Location, private _empService:EmpService, private route:ActivatedRoute) { }
ngOnInit() {
//let params:any = this.route.snapshot.params;
this.editEmployee(6); //I have tried to pass static value
console.log(this.employee); //Here this is undefined
}
backClicked() {
this._location.back();
}
editEmployee(id) {
this._empService.getEmployee(id).subscribe((employee)=> {
this.employee = employee[0];
console.log(employee[0]); //This have below output in console
//{id: "6", emp_name: "Mohit", emp_email: "mohit@ommzi.com", emp_phone: "9800000", emp_status: "y"}
})
}
}
因为您正在使用 Observables,所以 console.log(this.employee)
在设置员工之前被调用。我会在 editEmployee
中推荐你 return 一个 Promise 并使用:
editEmployee(id) {
return new Promise((resolve) => {
this._empService.getEmployee(id).subscribe((employee)=> {
this.employee = employee[0];
console.log(employee[0]);
resolve();
});
});
}
this.editEmployee(6).then(()=> {
console.log(this.employee);
}
请注意,这不是最好、最漂亮的解决方案,但如果您想保持代码的这种风格,我会这样做。