Цикл машинописи не повторяется

#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.