我正在使用Angular5,希望创建一个用户可以用按钮插入新记录的表单。每个记录中都有许多控件,应该独立于其他记录进行更改。我做过很多次,但现在我得到了奇怪的结果。
<form #newRequestForm="ngForm">
<a class="list-group-item" *ngFor="let detail of currentRequest.details; let index$ = index">
.
.
.
<ng-select [items]="products" [searchFn]="searchProduct" (change)="productChanged($event, detail)">
<ng-template ng-label-tmp let-item="item">
{{item.code}} - {{item.name1}}
</ng-template>
</ng-select>
<input class="form-control" name="productname1" type="text" [ngModel]="detail.product.name1" />
<input class="form-control" name="productname2" type="text" [ngModel]="detail.product.name2" />
<input class="form-control" name="productname3" type="text" [ngModel]="detail.product.name3" />
<input class="form-control" type="text" name="description" [(ngModel)]="detail.description" />
问题是由ng select onchange调用的方法
productChanged
设置当前所选产品的产品名称。(产品在ERP中有3个单独的名称字段。)当发生这种情况时,表单中所有记录的3个名称字段都将更改为当前所选产品的名称字段。无论我使用哪一个ng select,都已更改。所有其他领域都是分开工作的,例如:描述。
所以我想这个bug在方法中,但是看起来是这样的:
productChanged($event, detail) {
detail.product = $event;
console.log('-----------------------------------------');
this.currentRequest.details.forEach((d, i) => {
console.log(i, d.product !== null ? d.product.name1 : '');
});
}
是的,我试过用旧的console.log进行调试,它说每个细节的内容都是完美的,根据该记录的最后一个选择ng select。
输入控件仍然由我所做的任何选择重写。为什么?