我有一个数组和一个对象。在数组中,我从我的服务和对象中获取一个列表,我正在分配该数组的第一个元素。
feesEntries: Array<any> = [];
selectedFeesEntry: any;
clientList: Array<any> = [];
getData(data){
this.feesEntries = JSON.parse(data['_body']);
this.selectedFeesEntry = this.feesEntries[0];
}
在UI上从feesEntries
数组中显示一个表。我有一个下拉菜单选择客户和我ClientList
&amp;的选项ngModel
用于将select绑定到selectedFeesEntry
。
样品:
<label class="control-label" for="select">Client Name</label>
<div class="input-group">
<select class="form-control" id="select" [(ngModel)]="selectedFeesEntry.client.name" name="selectedClientName" (change)="onClientNameChange(selectedFeesEntry.client.name)">
<option *ngFor="let cl of clientList" [ngValue]="cl.name">{{cl.name}}</option>
</select>
</div>
现在的问题是,当我从选项中选择客户端时,使用ngmodel
只应更新selectedFeesEntry
,但在我的情况下,feesEntries
也会更新。我不知道为什么会这样。
任何帮助都将不胜感激。
由于
答案 0 :(得分:2)
据我了解,如果从下拉列表中选择了一个选项,则selectedFeesEntry
会发生变化,因为您已经分配了selectedFeesEntry
这样的内容,
this.selectedFeesEntry = this.feesEntries[0];
selectedFeesEntry
只是this.feesEntries[0]
的引用,换句话说,它是浅层副本
要执行深层复制,
this.selectedFeesEntry = JSON.parse(JSON.stringify(this.feesEntries[0]));
这将创建一个新对象
希望这有帮助