Typescript - Как извлечь объекты внутри массива объектов? - PullRequest
0 голосов
/ 07 ноября 2018

Вот массив variants:

[
  {
    type: 'color',
    options: ['red', 'green', 'blue']
  },
  {
    type: 'size',
    options: ['M', 'G', 'GG']
  }
]

Во-первых, мне нужно получить массив type, например, types = ['color', 'size']. Затем я буду использовать этот массив внутри mat-select:

<mat-select placeholder="Types" (selectionChange)="typeChange($event.value)">
  <mat-option *ngFor="let type of types" [value]="type"> {{type}} </mat-option>
</mat-select>

Во-вторых, мне нужно заполнить массив options, отфильтровав массив variants, чтобы найти правильный тип:

typeChange(type: string) {
  const variant = this.variants.find(v => v.type === type);
  this.options = variant.options;
}

Затем я могу заполнить второй select параметрами:

<mat-select placeholder="Options">
  <mat-option *ngFor="let opt of options" [value]="opt"> {{opt}} </mat-option>
</mat-select>

Мне нужно заполнить эти два mat-selects массивом variants. Есть ли хороший способ добиться этого?

1 Ответ

0 голосов
/ 07 ноября 2018

Пожалуйста, исправьте меня, если я ошибаюсь, я считаю, что вместо двух массивов вариантов, есть один массив. Я создал пример для stackblitz . Вам просто нужно создать массив типов.

Вот код TS:

 variants = [
  {
    type: 'color',
    options: ['red', 'green', 'blue']
  },
   {
    type: 'size',
    options: ['M', 'G', 'GG']
  }
]
types = [];
options = [];
ngOnInit(){
this.variants.forEach(t=>this.types.push(t.type));
}
typeChange(type: string) {
  const variant = this.variants.find(v => v.type === type);
  this.options = variant.options;
}

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...