Максимальный размер стека вызовов превышен в угловых 8 - PullRequest
1 голос
/ 10 октября 2019

У меня есть 2 выпадающих списка. я привязываю данные о продукте к нему. в одну каплю с кодом продукта и 2-й выпадающий с именем продукта. когда я выбираю код продукта из первого раскрывающегося списка, во втором раскрывающемся списке необходимо выбрать название продукта на основе кода продукта. работать с одним выпадающим списком - это нормально. когда записана та же логика для 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 - код товара.

1 Ответ

1 голос
/ 10 октября 2019

Правильно, поэтому мое лучшее предположение здесь - вам удалось создать себе бесконечный цикл.

Пользователь выбирает sku, который заставляет ngModelChange срабатывать, вызывая выполнение onCodeChange().

onCodeChange Сбрасывает элемент управления productName, который снова вызывает срабатывание ngModelChange, но на этот раз для элемента управления product onProductChange.

onProductChange, а затем сбрасываетsku, таким образом, вызывая onCodeChange.

Это затем продолжается, и продолжается, и продолжается. onCodeChange косвенный вызов onProductChange и onProductChange косвенный вызов onCodeChange.

Вам необходимо вывести код сброса в событие onselection или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...