在我的Angular 4应用程序中,我有一个组件,它有一个名为selectedEmployee的对象。该对象有一个名为EmploymentStatuses的属性,它是一个对象数组。如果用户触发一个函数,我向服务器发送一个请求,该请求返回一组更新的状态。我想用从服务器返回的数据替换EmploymentStatuses数组。这是我的代码:
doUpdateEmployeeEmploymentStatusEntry(model: any) {
var self = this;
this.api.put('employees/UpdateEmployeeEmploymentStatusEntry', model).subscribe((res: any) => {
var statuses = res.json();
self.resetEmploymentStatuses(statuses);
}, (error: any) => {
...
});
}
resetEmploymentStatuses(statuses: Array<any>) {
this.selectedEmployee.EmploymentStatuses = new Array<any>(); <-- this line trigger the error
for (let item of statuses) {
... some other unrelated code
this.selectedEmployee.EmploymentStatuses.push(item);
}
}
&#13;
一切运行正常,UI正确更新,但是,我在控制台中收到以下错误:
errors.ts:42 ERROR Error: Uncaught (in promise): Unexpected literal at position 2
at resolvePromise (zone.js:795)
at zone.js:847
at ZoneDelegate.invokeTask (zone.js:425)
at Object.onInvokeTask (ng_zone.ts:288)
at ZoneDelegate.invokeTask (zone.js:424)
at Zone.runTask (zone.js:192)
at drainMicroTaskQueue (zone.js:602)
at ZoneTask.invokeTask [as invoke] (zone.js:503)
at invokeTask (zone.js:1427)
at XMLHttpRequest.globalZoneAwareCallback (zone.js:1445)
&#13;
我尝试在setTimeout中包装 self.resetEmploymentStatuses(状态); ,但我仍然收到错误。我也尝试在ChangeDetectorRef上调用detectChanges(),但没有成功。
知道我做错了吗?
谢谢。