对象已修改,但数组未修改

时间:2018-07-02 13:30:02

标签: angular typescript angular5

我有一个在视图中显示的对象数组,并且想使用http get调用的结果更新数组中的对象。

对象(项目)已更新,但是当我调试它时,似乎对象的这种变化不存在于数组(this.myArray)中,因此视图中没有任何改变。

component.ts

myFunction() {
        this.myArray.forEach(item => {
                this._appSvc.modifyObject(item).subscribe(result => {
                    item = result;
                });
        });
    }

appSvs.ts

modifyObject(item): Observable<IItem>{
        return this._http.get(url).map(response => <IItem> response.json());
    }

component.html

<tbody>
    <tr *ngFor="let item of myArray | orderBy:{property: sortingAttribute, direction: direction}">
        <td>
            <input type="checkbox" name="select-{{item.id}}"
                   id="select-{{item.id}}"
                   [checked]="item.selected"
                   (change)="selectItem(item.id)"/>
        </td>
        <td>
            <span>{{item.name}}</span>
        </td>

        <td>
            <span>{{item.code}}</span>
        </td>
    </tr>
</tbody>

1 个答案:

答案 0 :(得分:0)

根据索引和从服务中获得的新项来修改基本数组。

myFunction() {
        this.myArray.forEach((item,index) => {
                this._appSvc.modifyObject(item).subscribe(result => {
                    this.myArray[index] = result;
                });
        });
    }