как показать несколько выбранных опций в матовом выборе (флажок) - PullRequest
0 голосов
/ 07 марта 2020

У меня есть форма редактирования, в которой я хочу показать выбранные параметры, которые извлекаются из базы данных. ниже html код

<mat-select placeholder="Select Year" [compareWith]="compareFn" formControlName="security_deposite_for" multiple>
        <mat-option *ngFor="let year of security_deposite_for_yr; let i = index;" [value]="year.val"
          (click)="tosslePerOne(i)">
          {{year.viewValue}}
        </mat-option>
        <mat-option #allSelected (click)="toggleAllSelection()" [value]="0">All</mat-option>
      </mat-select>

это моя функция, в которой я получаю значения из базы данных

getSecurityDepositeDetailForEdit(bid_id){
this.abcSer.getgetSecurityDepositeDetail(bid_id).subscribe(
  res => {
    console.log('res in sec deposite',res);
    res.forEach(element => {
        this.checkedOptions.push({
          val: element.sec_deposite_year,
          viewValue: element.sec_deposite_year,
        });
    });
  },
  err => {
    console.log('err in sec details',err);
  }
)

}

следующая функция сравнения

compareFn(security_deposite_for_yr,checkedOptions) {
console.log('security_deposite_for_yr 1',security_deposite_for_yr);
console.log('checkedOptions',checkedOptions);
return security_deposite_for_yr && checkedOptions ? security_deposite_for_yr.val === checkedOptions.val : security_deposite_for_yr === checkedOptions;
}

в консоли security_deposite_for_yr имеет значения, но checkOptions не отображает никаких значений.

, как показать выбранные значения в mat multi select

**** Редактировать ******

Я попробовал следующий код

getSecurityDepositeDetailForEdit(bid_id){
this.eauctionSer.getgetSecurityDepositeDetail(bid_id).subscribe(
  res => {
    console.log('res in sec deposite',res);
   this.tenderFrm.security_deposite_for.setValue([res.map(i => i.sec_deposite_year)]);
    // res.forEach(element => {
    //   this.tenFrm.security_deposite_for.setValue(element.sec_deposite_year);
    // });
    console.log('frm',this.tenderFrm.security_deposite_for.value);
  },
  err => {
    console.log('err in sec details',err);
  }
)}

, но он показывает 1-й вариант, выбранный в раскрывающемся списке выбора матов

...