Как бы я преобразовал объект с логическими значениями для использования с множественным выбором Angular Material? - PullRequest
0 голосов
/ 21 марта 2019

Как мне преобразовать следующий объект (полученный из моей конечной точки) для инициализации поля формы Angular Material 2, Multi-select:

Объект из API:

roles = {
    admin: false,
    user: true,
}

Шаблон:

<mat-select formControlName="roles" required multiple [compareWith]="compareRoles">
    <mat-option *ngFor="let role of roleList" [value]="role">{{role}}</mat-option>
</mat-select>

FormGroup:

createForm(): FormGroup
{
    return this._formBuilder.group({
        roles : [[this.roles]],
    });
}

сравнить с функцией:

public compareRoles(c1: any, c2: any): boolean {
    return c2[0].hasOwnProperty(c1) && c2[0][c1]
}

По какой-то причине я получаю следующую ошибку:

"Cannot read property 'hasOwnProperty' of undefined"

Чего мне не хватает? Я просто хочу, чтобы поле множественного выбора было предварительно заполнено данными из API.

1 Ответ

0 голосов
/ 21 марта 2019

Если вы сделаете

public compareRoles(c1: any, c2: any): boolean {
  if (c2 && c2[0]) {
    return c2[0].hasOwnProperty(c1) && c2[0][c1];
  }
  return false;
}

, это должно заставить ошибку замолчать.Вы можете добавить оператор debugger перед возвратом false, чтобы выяснить, почему c2 [0] не определен (без полной рабочей демонстрации это довольно сложно диагностировать).

...