无法更新Angular2 promise回调中的组件变量& ES6

时间:2017-03-20 12:29:24

标签: javascript angular ecmascript-6 promise angular2-services

当我尝试更新我的自定义组件的绑定模型时,我在Angular2网站上遇到了一些问题,这是一个来自数据源的调整。

我的自定义服务中包含以下内容:

public GetAllProcesses(): Promise<IProcess[]> {
    return this._http.get('api/processes')
                     .toPromise()
                     .then(response => response.json() as IProcess[])
                     .catch(this.handleError);
}

然后我在我的组件中完成了以下操作:

export class ProcessesDashboardComponent implements OnInit{

       bindedProcessesModel: any[] = [];

       constructor(private _mycustomservice: MyCustomService) {}

       ngOnInit() {
          this.obtainProcesses();
       }

       obtainProcesses(): void {
           this._mycustomservice.GetAllProcesses()
               .then((processesServiceData) => {

                 let bindedAdjustedProcesses: any[] = [];

                 for(let process of processesServiceData)
                 {
                   let singleProcessAdaptedData: any;

                    singleProcessAdjustedData= {
                      "Process": process.Name,
                      "Status": process.Status
                    };

                    bindedAdjustedProcesses.push(singleProcessAdjustedData);
                 }

                 return bindedAdjustedProcesses;
            })
            .then(bindedAdjustedProcesses=> this.bindedProcessesModel)
            .catch(errorMsg => {
                error = errorMsg;
                this.bindedProcessesModel = [];
            });
}

出于某种原因,我没有承诺并且我无法访问我的组件变量,因为在任何回调的部分中,“this”总是未定义的。你能帮忙解决我做错的事吗?我能够正确检索数据,但看起来它无法将其分配给我的组件变量。

1 个答案:

答案 0 :(得分:0)

如果您希望将Promise的结果分配给变量bindedProcessesModel,则应以这种方式调用 .then 方法:

.then((bindedAdjustedProcesses) => {
this.bindedProcessesModel = bindedAdjustedProcesses
})