mat-select Максимальный размер стека вызовов превышен при выборе с более чем 800 опциями - PullRequest
0 голосов
/ 23 октября 2019

Я использую mat-select для заполнения массива объектов в раскрывающемся списке. есть возможность выбрать и отменить выбор всех значений, нажав на ВСЕ. Для этого я освобождаю связанный с ним элемент управления формой, а для выбора всего заполняю элемент управления формой всеми идентификаторами. Для малых данных, он работает нормально. Для данных более 800, когда я очищаю форму управления при отмене выбора al, выдает ошибку (максимальный размер стека вызовов превышен в SafeSubscriber.push ../ node_modules / rxjs / _esm5 / internal/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js: 200) в SafeSubscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.SafeSubscriber.next (Subscriber.js: 130) 100) ** component.html

 <mat-select [formControl]="courseFormControl" multiple aria-label="Course Name"
          [(ngModel)]="selectedCourseIds">
<mat-option *ngFor="let course of courseList"
           (onSelectionChange)="onCourseSelect($event,courseFormControl)">
            {{course.courseName}}
          </mat-option>
</mat-select>

component.ts

 onCourseSelect(event, form) {
    if(event.isUserInput) {
  let listCourseId =  [];
//data contains the total list
              data.map((val,ind) => {
                if(val.selected === true){
                  listCourseId.push(val.courseId)
                }
              });
          this.selectedCourseIds = listCourseId;

          this.courseFormControl.setValue(listCourseId);
}

Ошибка при удалении всех

core.js: 15724 ERROR RangeError: Максимальный стек вызововпревышен размер в SafeSubscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.SafeSubscriber .__ tryOrUnsub (Subscriber.js: 200) в SafeSubscriber.push ../ node_modules / rxjs / _esm5 / internals. SafeSubscriber.next (Subscriber.js: 130) в Subscriber.push ../ node_modules / rxjs / _esm5 / internal / Subscriber.js.Subscriber._next (Subscriber.js: 76) в Subscriber.push ../ node_modules / rxjs /_esm5 / внутренний / Subscriber.js. Subscriber.next (Subscriber.js: 53) в EventEmitter.push ../ node_modules / rxjs / _esm5 / internal / Subject.js.Subject.next (Subject.js: 47) в EventEmitter.push ../ node_modules / @ angular/core/fesm5/core.js.EventEmitter.emit (core.js: 13499) в MatOption.push ../ node_modules/@angular/material/esm5/core.es5.js.MatOption._emitSelectionChangeEvent (core.es5.js): 2803) в MatOption.push ../ node_modules/@angular/material/esm5/core.es5.js.MatOption.deselect (core.es5.js: 2595)

...