c# - 角度 8 中超出了最大调用堆栈大小
问题描述
我有 2 个下拉列表。我正在将产品数据绑定到它。在一个下拉列表中使用产品代码,第二个下拉列表中使用产品名称。当我从第一个下拉列表中选择产品代码时,第二个下拉列表需要根据产品代码选择产品名称。使用一个下拉菜单很好。当为第二个下拉菜单编写相同的逻辑时出现错误
超出最大调用堆栈大小。
<div class="col-md-9">
<select id="Code" class="form-control" placeholder="Code"
(ngModelChange)="onCodeChange()" formControlName="sku" required>
<option [value]="''">Select Code</option> <option [value]="product.sku"
*ngFor="let product of productData"> {{product.sku}}
</option>
</select>
</div>
<div class="col-md-9">
<select id="name" class="form-control" placeholder="Name"
(ngModelChange)="onProductChange()" formControlName="productName" required>
<option [value]="''">Select Name</option>
<option [value]="product.productName" *ngFor="let product of productData">
{{product.productName}}
</option>
</select>
</div>
onCodeChange(): void {
const stock = (this.sharedService.where(this.productData, 'sku', this.stockForm.controls.sku.value) || {}) as any;
this.stockForm.controls.productName.reset( stock.productName);
}
onProductChange(): void {
const stock = (this.sharedService.where(this.productData, 'productName', this.stockForm.controls.productName.value) || {}) as any;
this.stockForm.controls.sku.reset( stock.sku);
}
以上productdata包含产品相关信息。这里sku是产品代码。
解决方案
对,所以我最好的猜测是你已经设法为自己创建了一个无限循环。
用户选择一个sku
提示ngModelChange
触发导致 onCodeChange()
执行的。
onCodeChange
重置productName
再次导致ngModelChange
触发的控件,但这次是为product
控件onProductChange
。
onProductChange
然后重置sku
因此调用的onCodeChange
.
然后这种情况一直持续下去。onCodeChange
间接调用onProductChange
和onProductChange
间接调用onCodeChange
。
您需要将重置代码拉出到onselection
事件或类似的东西中。
推荐阅读
- templates - 在 SAS 中,如何使用 ODS tagsets.sasreport13 为具有模板样式的表格定义表格单元格填充?
- rabbitmq - 如何在rabbitmq中获取用户的密码?
- c++ - Opencv Mat For循环在它应该之前停止
- luigi - Luigi中重要参数的目的是什么?
- python - 如何在pytorch中创建正态分布
- django - DAL-yl 未定义
- arrays - 从数组创建通道
- c - 如何在 Linux 上运行以下消息队列?
- git - git submodule showing up as a file in git status
- excel - 动态轮换工作表excel