Я пытаюсь выбрать все поля выбора циновки, выбрав «Выбрать все» или «Отменить выбор всех». Таким образом, если я выберу «Выбрать все» или «Отменить выбор», я исправлю значение (как массив со всеми элементами или как пустой массив). Я попытался использовать «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>