订阅

时间:2017-11-23 17:22:03

标签: angular rxjs

在我的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;
&#13;
&#13;

一切运行正常,UI正确更新,但是,我在控制台中收到以下错误:

&#13;
&#13;
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;
&#13;
&#13;

我尝试在setTimeout中包装 self.resetEmploymentStatuses(状态); ,但我仍然收到错误。我也尝试在ChangeDetectorRef上调用detectChanges(),但没有成功。

知道我做错了吗?

谢谢。

0 个答案:

没有答案