Итак, в моем коде я получаю некоторые данные из API, которые хочу отобразить в раскрывающемся списке. Делал это для нескольких раскрывающихся списков, передавая данные от дочернего к родительскому с помощью @Output и обратно к другому дочернему элементу с @Input. Я взял полученные данные и использовал concat
, чтобы добавить их к dropdownList
. Вот фрагмент:
<p-multiSelect [options]="dropdownList" [(ngModel)]="selectedItems (onChange)="onItemSelect($event.itemValue)" [style]="{'width': '100%'}"></p-multiSelect>
import { SelectItem } from 'primeng/api';
interface DropdownItem {
name: string,
code: string
}
export class TriviaGroupsDropdownComponent implements OnChanges {
dropdownList: SelectItem[];
selectedItems: DropdownItem[];
item_count = 0;
displayName: "gotThisFromAPI";
catGroupName: "gotThisFromAPIToo";
ngOnChanges() {
this.dropdownList = this.dropdownList.concat({label: displayName, value: {id: this.item_count+1, name: catGroupName, code: ''}})
}
}
В следующем раскрывающемся списке я хочу отобразить буквально то же самое, что и в раскрывающемся списке перед ним. Я передал dropdownList
и selectedItems
через EventEmitter
его родительскому компоненту и вернулся обратно в его родственный компонент. Я уже делал это раньше с concat
, и у меня не было ни одной проблемы. Теперь я пытаюсь создать этот повторяющийся раскрывающийся список и получаю следующую ошибку:
Cannot read property 'concat' of undefined
Очень запутано. Я читал кое-где, что concat
работает только с массивами, а не с объектами. Но он по-прежнему работает с КАЖДЫМ выпадающим списком, который я только что создал! Я выдергиваю волосы, что я делаю не так?!
Вот стек для первого выпадающего списка, извините за беспорядочные комментарии, лол. Вы можете увидеть места, которые я использую concat
в строках 90, 112, 134, 156, 178, 200 и 222: https://stackblitz.com/edit/1st-dropdown
Вот stackblitz для повторяющегося раскрывающегося списка: https://stackblitz.com/edit/2nd-dropdown