Angular:自动更改检测和更新视图的功能

时间:2018-05-26 04:44:53

标签: angular angular-components

我有一个表格,我在其中显示Json对象值,并有一个模型,我可以在其中添加新数据,然后我会在表格中显示这些值。

<tbody>
    <tr *ngFor="let row of icDataToDisplay.icdata; let icIndex=index">
       <td [ngClass]="editMode && clickedRowIndex === icIndex? 'edit-enabled': ''">{{row.Device_Type}}</td>
       <td [ngClass]="editMode && clickedRowIndex === icIndex? 'edit-enabled-category': ''">{{row.Device_Model}}</td>
       <td [ngClass]="editMode && clickedRowIndex === icIndex? 'enabled-recommendation': ''">
            <span *ngIf="editMode && clickedRowIndex !== icIndex">{{row.Recommended_Software_Version}}</span>
            <span *ngIf="!editMode && clickedRowIndex !== icIndex">{{row.Recommended_Software_Version}}</span>
            <input type="text" class="enabled-hw" [(ngModel)]="row.Recommended_Software_Version" (ngModelChange)="onChange($event, 'Recommended_Software_Version')"
                                    *ngIf="editMode && clickedRowIndex === icIndex" />
       </td>


    </tr>
</tbody>

组件

public addSoftwareIcData() {
        this.configManagementService.postIcData(this.clickedProductFamily,
            '', this.icDataObject, 'Software').
            subscribe((response) => {
                if (response.status === 200) {
                    this.closeAddIcModal();
                    this.myData = 'IC data added successfully.';
                    this.icDataList = response;
                    this.ref.markForCheck();
                } else if (response.status === 304) {
                    this.info = response.message;
                }
            });
    }

在模式中,它是一个POST api调用,并且响应将包含新添加的数据以及旧数据。我重新分配api数据icDataToDisplay.icdata进行渲染。

问题是即使icDataToDisplay.icdata值已更改,视图也不会更新。为什么Angular没有执行自动更改检测?我试过this.ref.markForCheck();改变Angular的探测器,但它没有工作。请建议

0 个答案:

没有答案