core.js: 1673 ОШИБКА RangeError: Превышен максимальный размер стека вызовов - угловой - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь выбрать все поля выбора циновки, выбрав «Выбрать все» или «Отменить выбор всех». Таким образом, если я выберу «Выбрать все» или «Отменить выбор», я исправлю значение (как массив со всеми элементами или как пустой массив). Я попытался использовать «setValue» вместо patchValue и некоторых других вещей, но ни одна из них не сработала.

Важно отметить, что в первый раз, когда я выбираю Выбрать все, все работает правильно, но во второй раз, когда выскакивает ОШИБКА. Спасибо.

КОД:

segmentSelected() {
  console.log('Entro en segment selected')
  var arrayPrepared = [];
  var i = 2;

  console.log('El array que tenemos una vez entramos es: ')
  console.log(arrayPrepared)
  console.log('El valor de i que tenemos es:')
  console.log(i)
  console.log('El tamaño que limita es:')
  console.log(Object.keys(this.businessSegmentOptions).length)

  var values = this.targetCompaniesForm.controls['business_segment'].value;
  if (values.includes('Select All')) {
    for (i; i < Object.keys(this.businessSegmentOptions).length; i++) {
      arrayPrepared.push((this.businessSegmentOptions)[i])
      //console.log('Estoy metiendo el elemento en Business Segments:')
      //console.log((this.businessSegmentOptions)[i])
    }

    this.targetCompaniesForm.controls['business_segment'].patchValue(arrayPrepared, {
      emitEvent: false
    });

    /* var array = this.businessSegmentOptions;
    var index = array.indexOf('Select All');
    if (index > -1) {
      array.splice(index, 1);
    } */
  }
  if (this.targetCompaniesForm.controls['business_segment'].value.includes('Unselect All')) {
    this.targetCompaniesForm.controls['business_segment'].patchValue([], {
      emitEvent: false
    });
  }
}

И HTML:

<div id="business_segment" class="col-12 col-md-4 px-0 pl-sm-2 mt-2 m-sm-0">
  <label for="segment" class="font-weight-bold">Business Segment</label>
  <mat-select placeholder="Select segment" formControlName="business_segment" class="form-control inp-company border-0 text-left" multiple [ngClass]="{'border-bottom-red' : targetCompaniesForm.controls.business_segment.invalid && displayErrors}">
    <mat-option (click)="segmentSelected()" *ngFor="let option of businessSegmentOptions" value="{{option}}">{{option}}</mat-option>
  </mat-select>
</div>
...