NoneMat -selection-list с объектом, это возможно?

Я просматривал список выбора матов, найденный в документации к material.angular.io по адресу material.angular.io/components/list/overview

Я хотел бы использовать массив объектов вместо использования строкового массива. Документация имеет

 typesOfShoes: string[] = ['Falta passar fio', 'Peça oxidada'];

И это похоже на работу, но мой объект ниже не работает. Что я делаю не так? или это невозможно?

errorList = [
    { id: 1234, type: 'A1', description: 'dsfdsfdfgdgdgfio', selected:false },
    { id: 4567, type: 'C6', description: 'Pesdffsdça sdfsd', selected:false },
    { id: 7890, type: 'A5', description: 'sdfdsfc', selected:false }
];

<mat-selection-list #errorList class="area-block ">
    <mat-list-option *ngFor="let err of errorList " style="color: #000000;">
        {{err.type}}           
    </mat-list-option>
</mat-selection-list>

<p style="color: #000000;" class="area-block">
    Options selected: {{errorList.selectedOptions.selected.length}}
</p>

3 ответа

Вы можете сделать что-то вроде этого:

      <mat-selection-list #book [multiple]="false">
  <mat-list-option *ngFor="let book of books" [value]="book">
    {{ book.name }}
  </mat-list-option>
</mat-selection-list>

Примечание: я установил #book, возможно, вам следует установить #err вместо #errorList

Вам не хватает [value]:

<mat-selection-list #errorList class="area-block">
   <mat-list-option *ngFor="let err of errorList" [value]="err" style="color: #000000;">
      {{err.type}}
   </mat-list-option>
</mat-selection-list>

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

Не уверен, что именно не работает, но если вы хотите показать только количество выбранных элементов, тогда другой ответ @Srinivasan Sekar должен помочь, который заявляет, что у вас есть "конфликт имен" #errorList а также errorList массив ваших объектов, и вам нужно изменить. Но если вы хотите получить данные из выбранного поля, используйте [value], Для множественного выбора: вам нужно создать метод и продолжать добавлять выбранные значения в ваш массив для вашего использования. Все зависит от вашего пользовательского случая.

Stackblitz может охватить все ваши пользовательские случаи.

Конфликт имен - это проблема, просто поменяйте #errorList в #errorlist а также errorList.selectedOptions.selected.length в errorlist.selectedOptions.selected.length

<mat-selection-list #errorlist class="area-block ">
        <mat-list-option *ngFor="let err of errorList " style="color: #000000;">
       {{err.type}}

            </mat-list-option>
          </mat-selection-list>

          <p  style="color: #000000;" class="area-block ">
              Options selected: {{errorlist.selectedOptions.selected.length}}
            </p>
Другие вопросы по тегам