0
// html code   
 <select class="form-control form-control-primary" 
        (change)="changeValue(data)"
        [(ngModel)]="data" name="list" id="selectData">

          <option *ngFor="let data of dataList" [ngValue]="data">
           {{data.name}}
          </option>

    </select>

//  ts code
    data: any;
    dataList = [{id:1, name:"XYZ"},{id:2,name:"ABC"}];

    changeValue(data){
        console.log(data);     // prints selected data correctly
    }

这是示例代码,只是为了解释我如何在我的项目中使用它。在我的情况下,dataList 数组来自 API,下拉列表底部显示一个网格,该网格根据下拉列表的选定数据进行更新。当在下拉列表中选择第一个数据以外的数据并且我再次调用 dataList 的 API 以刷新列表时,我需要在下拉列表中选择 prevoius 选项,但它会重置为第一个选项。

而且我必须将对象与 ngModel Select 绑定。即使我尝试使用 ngModelChange, event.target.value 但对我没有任何帮助。我在控制台中获得了正确的数据值,但选择没有得到更新。

4

1 回答 1

2

从服务器接收到数据后,在 dataList 上编写一个循环并将其 Id 与您选择的前一个进行比较。然后将对象绑定到数据

// Assume that you saved previousId in localStorage or 
// got it from the server or somewhere else
for (let i = 0; i < this.dataList.length; i++ ) {
    if ( this.dataList[i].id == previousId ) {
        this.data = this.dataList[i];
    }
}

我希望它可以帮助你:)

于 2018-03-11T10:17:45.533 回答