在 subscribe() 方法之外未定义变量 Angular 2

variable is undefined outside of subscribe() method Angular 2

我正在处理 angular 2,并且在 subscribe() 函数之外的变量中出现未定义错误。employee 变量 ID undefinedsubscribe() 之外 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);
}

请注意,这不是最好、最漂亮的解决方案,但如果您想保持代码的这种风格,我会这样做。