как загрузить выбранный контрольный список выбора матов - PullRequest
0 голосов
/ 06 августа 2020

список выбора с проверкой внутри реактивной формы angular, как я могу показать проверки, которые уже были выбраны?

html:

<mat-list-item>

                  <mat-selection-list formControlName="documents" disabled multiple >
                    <mat-list-option checkboxPosition="before" *ngFor="let document of setDocuments"
                                     [value]="document.codigo">
                      {{document.descripcion}}
                    </mat-list-option>
                  </mat-selection-list>
                </mat-list-item>

Чтобы увидеть подробности операции, загрузите следующий элемент управления формой:

details(){

   let obj = this.data.objeto;
    let documents = obj.codigoSet;
    const usingSplit = documents.split(';');
    documents: new FormControl(usingSplit)
}

Я делаю разделение, потому что служба возвращает коды документов в виде строки, там я конвертирую их в массив, но они не отображаются выбранными

  <mat-list-item>

                  <mat-selection-list formControlName="documents" disabled multiple >
                    <mat-list-option checkboxPosition="before" *ngFor="let document of setDocuments"
                                     [value]="document.codigo" [selected]="selectList">
                      {{document.descripcion}}
                    </mat-list-option>
                  </mat-selection-list>
                </mat-list-item>

попробуйте добавить свойство [selected] и создать логическую переменную «selectList», вызвать службу всех документов и сравнить с кодом, который у меня есть, но при попытке назначить этот ответ переменной selectList он выдает ошибку

  selectList:boolean;


export class Document  {


details(){

   let obj = this.data.objeto;
    let documents = obj.codigoSet;
    const usingSplit = documents.split(';');

  this.setForView.subscribe( data =>{
         data.map((item) => ({
        ...item,

        this.selectList: usingSplit.some((el) => // error
          el === item.codigo
        )
      }));
      }
    );
    documents: new FormControl(usingSplit)
}


}


Я думаю, что сравнение списка, который у меня есть, с ответом службы - это решение, но я не могу найти способ.

1 Ответ

0 голосов
/ 07 августа 2020

список выбора матов несколько хранит массив, поэтому вам нужно только указать значение для formControl. Но это значение должно быть массивом (пожалуйста, не путайте с FormArray)

Если ваши данные становятся похожими, например,

data={documents:"1;2;5"} //documenst is a string

Вы просто

documents:new FormControl(data.documents.split(";"))
...