#javascript #angular #typescript
#javascript #угловой #typescript
Вопрос:
Я пытаюсь зациклить свой массив, используя foreach и forloop в приложении angular 8. Но он не повторяет какой-либо элемент. Я не могу понять проблему. кстати, мой массив содержит 250 объектов. Кто-нибудь знает проблему?
Вот мой код:
if (attributeValue.lovAvailable) {
console.log('LOV....', attributeObject.attributeLOVList);
attributeObject.attributeLOVList.forEach(element => {
console.log('element',element);
});
}
Это консольный вывод моего списка:
Это список расширения:
Комментарии:
1. Например, вы можете попробовать элементы журнала перед инициализацией. Можете ли вы предоставить больше информации и кода?
Ответ №1:
Вы определенно пытаетесь выполнить итерацию списка до его инициализации.
Вы можете видеть это на скриншоте консоли.предоставленный вами журнал. Он показывает []
*, что означает, что список в этот момент пуст.
Вам нужно убедиться, что вы ждете инициализации списка, прежде чем использовать его. Например, если список передается как an @Input
, вы не можете использовать его в конструкторе, но в ngOnInit
.
* Примечание:
журнал объекта в консоли — это не снимок, а ссылка. Вот почему на втором изображении у вас были все элементы в списке после его расширения. К тому времени он был инициализирован (верхняя строка все еще отображается []
).
Редактировать:
чтобы привести пример о console.log:
interface MyObject {
name: string;
}
let list: MyObject[] = [];
console.log(list);
console.log(list.length);
list.push({name: 'Hello'});
list.push({name: 'From'});
list.push({name: 'The'});
list.push({name: 'Other'});
list.push({name: 'Side'});
Комментарии:
1. Он инициализирован, сэр. Второй снимок экрана в вопросе — это расширенный список первого снимка экрана.
2. Да, я знаю, что это так, но, как я уже писал, объект (список) печатается как ссылка на консоль, а не снимок. Измените журнал перед циклом, чтобы напечатать длину, и вы увидите, что он печатает 0 ->
console.log('LOV....', attributeObject.attributeLOVList.length);
3. («Я знаю, что это так» относится ко второй части скриншота.) Я добавил пример, чтобы прояснить часть console.log.